孤独de风雨 孤独de风雨
关注数: 28 粉丝数: 37 发帖数: 4,114 关注贴吧数: 18
新人。。求教 os_ms_b equ 7fh ;系统10ms计数器os_dida_b equ 7eh ;系统dida计数器os_dida_o_b equ 7dh ;系统dida跟随计数器;----------------------------------------sec_b equ 78h ;秒min_b equ 77h ;分hour_b equ 76h ;时week_b equ 75h ;周;----------------------------------------lamp_sp_b equ 6fh ;红绿灯指针lamp_bz_b equ 6eh;------------------------------ org 0000h jmp main_start org 000bh jmp t0_zdzcx org 0023h jmp uart_zdzcx;------------------------------ org 0040hmain_start: mov SP,#02fh call csh_zcxmain_loop: mov a,os_dida_b xrl a,os_dida_o_b jz main_next mov os_dida_o_b,os_dida_b ;---------- call clock_zcx ;时钟子程序 call lamp_zcx ;红绿灯子程序 ;----------main_next: jmp main_loop;------------------------------;控制系统dida为1秒,即超级循环1秒执行一次t0_zdzcx: push a push PSW ;---------- mov TH0,#0d8h mov TL0,#0f8h ;---------- inc os_ms_b mov a,os_ms_b cjne a,#100,t0_exit mov os_ms_b,#0 inc os_dida_b mov a,os_dida_b cjne a,#60,t0_exit mov os_dida_b,#0 ;----------t0_exit: pop PSW pop a reti;------------------------------uart_zdzcx: jbc TI,uart_fs jbc RI,usrt_js jmp uart_exit ;----------uart_fs: jmp uart_exit ;----------usrt_js: mov lamp_bz_b,SBUF mov SBUF,SBUF ;----------uart_exit: reti;------------------------------csh_zcx: ;--var----- mov os_ms_b,#0 mov os_dida_b,#0 mov os_dida_o_b,#0 ;----- mov sec_b,#0 mov min_b,#0 mov hour_b,#0 mov week_b,#0 ;----- mov lamp_sp_b,#0 mov lamp_bz_b,#0 ;--t01----- mov TMOD,#00100001b mov TH0,#0d8h mov TL0,#0f0h mov TH1,#0e6h mov TL1,#0e6h setb TR0 setb TR1 ;--uart---- mov SCON,#01010000b ;--int----- mov IP,#00000000b mov IE,#10010010b ;---------- ret;------------------------------;秒/分/小时/周 计算clock_zcx: inc sec_b mov a,sec_b cjne a,#60,clock_exit mov sec_b,#0 inc min_b mov a,min_b cjne a,#60,clock_exit mov min_b,#0 inc hour_b mov a,hour_b cjne a,#24,clock_exit mov hour_b,#0 inc week_b mov a,week_b cjne a,#7,clock_exit mov week_b,#0clock_exit: ret;------------------------------;控制红绿灯闪烁lamp_zcx: mov a,lamp_bz_b anl a,#003h mov b,#3 mul ab mov dptr,#lamp_ms_tab jmp @a+dptrlamp_ms_tab: ljmp lamp_ms0 ljmp lamp_ms1 ljmp lamp_ms2 ljmp lamp_ms3 ;----------lamp_ms0: mov a,lamp_sp_b mov dptr,#lamp_data_tab movc a,@a+dptr mov P0,a ;---------- inc lamp_sp_b mov a,lamp_sp_b cjne a,#20,lamp_exit mov lamp_sp_b,#0 jmp lamp_exit ;----------lamp_ms1: mov P0,#11011011b jmp lamp_exit ;----------lamp_ms2: mov P0,#11110110b jmp lamp_exit ;----------lamp_ms3: mov P0,#11110011b jmp lamp_exit ;----------lamp_exit: ret;------------------------------lamp_data_tab:db 11011011b, 11011011b, 11011011b, 11011011bdb 11011011b, 11011011b, 11101011b, 11101011bdb 11110011b, 11110011b, 11110110b, 11110110bdb 11110110b, 11110110b, 11110110b, 11110110bdb 11110101b, 11110101b, 11110011b, 11110011b;空,空,绿,黄,红,红,黄,绿;------------------------------ end;------------------------------
1 下一页