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