1樓:匿名使用者
org 0000h
ljmp main
org 000bh
ljmp t0isr
org 0030h
able: ; 共陰極數碼管顯示**表db 3fh,06h,5bh,4fh,66h ;12345db 6dh,7dh,07h,7fh ;6789main:
mov sp,#5fh
mov tmod,#01h
mov th0,#high (65536-50000)mov tl0,#low (65536-50000)setb ea
setb et0
mov r2,#0
loop:
jb p3.5,$
lcall delay
jb p3.5,loop
jnb p3.5,$
inc r2
loop1:
mov a,r2
jnz loop2
setb tr0
sjmp loop
loop2:
dec a
jnz loop3
clr tr0
sjmp loop
loop3:
mov r2,#0
mov r3,#0
mov r4,#0
clr tr0
sjmp loop
delay:
mov r6,#20
delay1:
mov r7,#250
djnz r7,$
djnz r6,delay1
rett0isr:
clr tr0
mov th0,#high (65536-50000)mov tl0,#low (65536-50000)setb tr0
inc r0
mov a,r0
cjne a,#20,t0e
mov r0,#0
inc r1
mov a,r1
cjne a,#100,t0isr1
t0isr1:
jc,t0isr2
mov a,#0
t0isr2:
mov b,#10
div ab
mov dptr,#tab
movc a,@a+dptr
mov p0,a
mov a,b
movc a,@a+dptr
mov p2,a
t0e:
retiend
2樓:做而論道
;p0, p2靜態顯示
;設系統晶振為12mhz。
;按鍵連線在p3.5,
;按一下,計時,再按一下,停止,再按一下,清零。
;---------------------------------------
org 0000h
ljmp main
org 000bh
ljmp t0_int
;---------------------------------------
org 0100h
init: ;初始化
mov p0, #3fh
mov p2, #3fh
mov r1, #0
mov r2, #0
mov r3, #20
mov dptr, #tab ;表首址送dptr
mov tmod, #01h
mov tl0, #(65536 - 5000) mod 256
mov th0, #(55536 - 5000) / 256
clr tr0
clr p3.6
ret;---------------------------------------
main:
call init
mov r4, #255
setb et0
setb ea
;---------------------------------------
m_loop:
jb p3.5, m_loop
call dly
jb p3.5, m_loop
jnb p3.5, $
inc r4
cjne r4, #3, m1
mov r4, #0
m1: cjne r4, #2, m2
call init
sjmp m_loop
m2: cpl tr0
sjmp m_loop
;---------------------------------------
t0_int:
mov tl0, #(65536 - 5000) mod 256
mov th0, #(55536 - 5000) / 256
djnz r3, t0_e
mov r3, #20
inc r1
cjne r1, #10, t0_1
mov r1, #0
inc r2
cjne r2, #10, t0_2
mov r2, #0
mov p0, #06h
mov p2, #3fh
setb p3.6
clr tr0
mov r4, #1
reti
t0_2:
mov a, r2 ;顯示十位
movc a, @a + dptr
setb acc.7
mov p0, a
t0_1:
mov a, r1 ;顯示個位
movc a, @a + dptr
mov p2, a
t0_e:
reti
;---------------------------------------
tab: db 3fh, 06h, 5bh, 4fh, 66h;0~4
db 6dh, 7dh, 07h, 7fh, 6fh;5~9
;---------------------------------------
dly:
mov r6, #20 ;10ms延時.
d1: mov r7, #248
djnz r7, $
djnz r6, d1
ret;---------------------------------------
end參考:
如何利用51微控制器實現計數器功能?並顯示在數碼管上,00~99之間的計數。求c語言**!初學勿複雜
3樓:我不清楚唉
一年多沒接觸了。。。忘光了。。。但思路差不多:設定兩個中斷,一箇中斷後加一,一箇中斷後減一。。再查表顯示
4樓:匿名使用者
前幾天剛剛做過,有這個功能,不過是pic
5樓:匿名使用者
用那幾個埠?用譯碼器麼?數碼管用共陽的還是共印的?
在51微控制器中用組合語言rlca為什麼左移兩位
51微控制器中,rlc a是帶進位的迴圈左移,所以執行的結果不是將低位清0,要想將低位清零,實現點亮兩個燈可以採取的方法 1 直接賦值實現 a mov p1,0fch b mov a,p1 anl a,0fch mov p1,a 2 用迴圈命令,但每迴圈一次,需要將c清0mov a,p1 clr c...
51微控制器組合語言的理解,坐等,求高手
mov 30h,250這條指令,是3位元組 2週期指令,機器碼是 75 30 fa 先取指,再執行。在第一個機器週期取到指令的前兩個位元組 75 30,在第二個機器週期的前半週期取到指令的第三個位元組 fa 250 第二個機器週期的後半週期執行該指令的操作,即將立即數250傳送到30h單元。按上述過...
如何使用組合語言實現多位十進位制數相加
多少位十進位制數相加?用組合語言 編一程式把鍵入的十六進位制數轉化 成十進位制數。50 用組合語言如何實現 3個 16位二進位制數相加 你這是兩個三位元組的二進位制數,即24位的二進位制數,不叫3個16位二進位制數,只是兩個數相加。你的程式這麼寫,每一個數是先存放高位,後放低位。如被加數放20h,先...