T1為定時模式,定時65.536ms,P2.0對應(yīng)的LED等閃爍一次,T0計數(shù)模式,計數(shù)脈沖從P3.4腳用按鍵輸入,按一次,記一次,所以計數(shù)初值為0FFFFh,沒按一次,產(chǎn)生一個溢出,P2.5對應(yīng)的LED閃爍,同時數(shù)碼管加1顯示。
一、定時/計數(shù)器終端模式
org 0000h
ljmp bb ;跳轉(zhuǎn)到主程序入口bb處
org 000bh ;定時器0中斷響應(yīng)從這里開始執(zhí)行
cjne r2,#9d,xx
mov r2,#00h
ljmp xx11
org 001bh ;定時器1中斷響應(yīng)從這里開始執(zhí)行
ljmp xxx
bb: mov p1,#3fh ;主程序入口處
mov tmod,#05h ;05h=0000 0101B設(shè)置T1定時T0計數(shù)模式,0定時,1計數(shù)
;00是13位二進制計數(shù)模式0,高4位控制T1
;01是16位二進制計數(shù)模式1,低4位控制T0
mov dptr,#0300h ;查表入口地址存放
mov r2,#00h
setb et0 ;和setb 0afh效果相同
setb ea ;和setb 0abh相同
setb et1 ;和setb 0a9h相同
mov tmod,#05h ;05h=0000 0101B設(shè)置T1定時T0計數(shù)模式,0定時,1計數(shù)
;00是13位二進制計數(shù)模式0,高4位控制T1
;01是16位二進制計數(shù)模式1,低4位控制T0
mov dptr,#0300h ;查表入口地址存放
mov r2,#00h
setb et0 ;和setb 0afh效果相同
setb ea ;和setb 0abh相同
setb et1 ;和setb 0a9h相同
setb tr0
setb tr1
mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0fdh ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
sjmp $ ;程序執(zhí)行時,原地踏步等待語句,在沒有中斷請求時,
;在此位置原地踏步計數(shù)定時計數(shù),有請求時跳到中斷入口執(zhí)行中斷
xx: inc r2
xx11: mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0fdh ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)
mov a,r2
movc a,@a+dptr
cpl p2.5
mov p1,a
reti
setb tr1
mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0fdh ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
sjmp $ ;程序執(zhí)行時,原地踏步等待語句,在沒有中斷請求時,
;在此位置原地踏步計數(shù)定時計數(shù),有請求時跳到中斷入口執(zhí)行中斷
xx: inc r2
xx11: mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0fdh ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)
mov a,r2
movc a,@a+dptr
cpl p2.5
mov p1,a
reti
xxx: mov th1,#00h ;計數(shù)器1的計數(shù)初值的高8位
mov tl1,#00h ;計數(shù)器1的計數(shù)初值的低8位
cpl p2.0
reti
mov tl1,#00h ;計數(shù)器1的計數(shù)初值的低8位
cpl p2.0
reti
org 0300h ;七段顯示嗎表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
二、定時/計數(shù)器查詢模式
org 0000h
ljmp bb ;跳轉(zhuǎn)到主程序入口bb處
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
二、定時/計數(shù)器查詢模式
org 0000h
ljmp bb ;跳轉(zhuǎn)到主程序入口bb處
bb: mov tmod,#15h ;主程序入口處
;設(shè)置T1定時模式,工作在計數(shù)方式0,設(shè)置T0計數(shù)模
;式工作在計數(shù)方式1
;設(shè)置T1定時模式,工作在計數(shù)方式0,設(shè)置T0計數(shù)模
;式工作在計數(shù)方式1
mov dptr,#0300h ;查表入口地址存放
clr et0 ;關(guān)定時/計數(shù)器0中斷
setb ea ;和setb 0abh相同,開總中斷開關(guān)
setb et1 ;和setb 0a9h相同,開定時/計數(shù)器1中斷
setb tr0
setb tr1
mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0ffh ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
CX: JBC TF0, xx ;查詢定時/計數(shù)器0溢出標志位,有溢出跳轉(zhuǎn)xx執(zhí)行
JBC TF1, xxx ;查詢定時/計數(shù)器1溢出標志位,有溢出跳轉(zhuǎn)xxx執(zhí)行
sjmp CX ;無溢出,跳CX繼續(xù)查詢
;溢出是在THi和TLi計數(shù)滿,超過FFFFH時,TFi被自動置1,中斷和查詢都是根
;據(jù)這個標志是否為1來響應(yīng)的。
xx: mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0ffh ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)
cjne r2,#10d,xx11
mov r2,#00h
xx11: mov a,r2
movc a,@a+dptr ;查表,用七段碼顯示計數(shù)數(shù)字
cpl p2.5 ;并讓P2.5上的LED有閃爍效果
mov p1,a ;顯示數(shù)字效果從P1口輸出
inc r2 ;加1計數(shù)
ret
clr et0 ;關(guān)定時/計數(shù)器0中斷
setb ea ;和setb 0abh相同,開總中斷開關(guān)
setb et1 ;和setb 0a9h相同,開定時/計數(shù)器1中斷
setb tr0
setb tr1
mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0ffh ;計數(shù)器0的計數(shù)初值的低8位(第一次開始計數(shù)初值)
CX: JBC TF0, xx ;查詢定時/計數(shù)器0溢出標志位,有溢出跳轉(zhuǎn)xx執(zhí)行
JBC TF1, xxx ;查詢定時/計數(shù)器1溢出標志位,有溢出跳轉(zhuǎn)xxx執(zhí)行
sjmp CX ;無溢出,跳CX繼續(xù)查詢
;溢出是在THi和TLi計數(shù)滿,超過FFFFH時,TFi被自動置1,中斷和查詢都是根
;據(jù)這個標志是否為1來響應(yīng)的。
xx: mov th0,#0ffh ;計數(shù)器0的計數(shù)初值的高8位
mov tl0,#0ffh ;計數(shù)器0的計數(shù)初值的低8位(第二次以后開始計數(shù)初值)
cjne r2,#10d,xx11
mov r2,#00h
xx11: mov a,r2
movc a,@a+dptr ;查表,用七段碼顯示計數(shù)數(shù)字
cpl p2.5 ;并讓P2.5上的LED有閃爍效果
mov p1,a ;顯示數(shù)字效果從P1口輸出
inc r2 ;加1計數(shù)
ret
xxx: mov th1,#00h ;計數(shù)器1的計數(shù)初值的高8位
mov tl1,#00h ;計數(shù)器1的計數(shù)初值的低8位
cpl p2.0 ;t0定時模式,定時到讓P2.0取反,LED達到閃爍效果
ret
mov tl1,#00h ;計數(shù)器1的計數(shù)初值的低8位
cpl p2.0 ;t0定時模式,定時到讓P2.0取反,LED達到閃爍效果
ret
org 0300h ;七段顯示嗎表格入口
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end