微控制器高手們誰會用組合語言實現0 99間的計數 暫停 清零程式。對初學者實在是太難了。大神幫幫忙吧

2021-05-02 00:48:41 字數 3830 閱讀 8961

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,先...