org 0000h ajmp main org 000bh ;T0溢出中断入口地址· ajmp time0 org 0020h main: clr p1.5 mov r1,#0ffh mov r2,#00h ;给计数器r2赋初值0 mov sp,#70h ;设置堆栈 mov tmod,#01h ;设置T0工作方式 mov th0,#3ch ;T0置计数初值 mov tl0,#0b0h setb et0 ;允许T0溢出中断 setb ea ;cpu开中断 setb tr0 ;启动T0开始计数 wait: cjne r2,#20,wait ;定时时间未到,继续查询等待 acall light ;定时时间到,调用查表求灯光子程序 ajmp wait ;以下是查表求灯光子程序 light: mov r2,#00h ;计数器重新赋初值 inc r1 ;查表求灯光,详细解释见试验5“多位数码显示” mov a,r1 mov dptr,#tab movc a,@a+dptr mov p0,a cjne a,#0ffh,next mov r1,#0ffh next: ret ;子程序返回 ;以下是中断服务程序 time0: inc r2 ;计数器加1 mov th0,#3ch ;重置计数初值 mov tl0,#0b0h reti ;中断返回 tab: db 0fah,0f5h,0ebh,0d7h ;灯光变换表格 db 0afh,5fh,0aah,055h,0f0h,0fh,0ffh end