怎麼用組合語言實現分別用t0和t1對兩種物料進行檢測,數碼管實時顯示物料個數

2022-03-14 00:03:02 字數 6690 閱讀 7579

1樓:匿名使用者

t0和t1設定成計數器的形式就可以了。

簡單的寫乙個程式,只顯示1位。

org 0000h

ljmp main

org 000bh

ljmp t0isr

org 001bh

ljmp t1isr

org 0030h

main:

mov tmod,#66h

mov th0,#0ffh

mov tl0,#0ffh

mov th1,#0ffh

mov tl1,#0ffh

setb tr0

setb tr1

setb et0

setb et1

setb ea

mov r2,#0

mov r3,#0

loop:

mov dptr,#table

mov a,r2

movc a,@a+dptr

mov p0,a

mov a,r3

movc a,@a+dptr

mov p1,a

sjmp loop

t0isr:

inc r2

cjne r2,#10,t01

mov r2,#0

t01:

reti

t1isr:

inc r3

cjne r3,#10,t11

mov r3,#0

t11:

reti

table:      ; 共陰極數碼管顯示**表db    3fh,06h,5bh,4fh,66h ;01234db    6dh,7dh,07h,7fh,6fh ;56789end

2樓:修者世界

當t0和t1工作於計數器模式時就可以實現該功能org 0000h

ljmp main

org 000bh

ljmp t0isr

org 001bh

ljmp t1isr

org 0030h

main:

mov tmod,#66h

mov th0,#0ffh

mov tl0,#0ffh

mov th1,#0ffh

mov tl1,#0ffh

setb tr0

setb tr1

setb et0

setb et1

setb ea

mov r0,#0

mov r1,#0

mov dptr,#ledtab

loop:

mov a,r0

mov b,#10

div ab

movc a,#a+dptr

mov p2,#0fdh

mov p0,a

lcall delay

mov p2,#0feh

mov a,b

movc a,@a+dptr

mov p0,a

lcall delay

mov a,r1

mov b,#10

div ab

movc a,#a+dptr

mov p2,#0f7h

mov p0,a

lcall delay

mov p2,#0fbh

mov a,b

movc a,@a+dptr

mov p0,a

lcall delay

sjmp loop

t0isr:

inc r0

cjne r0,#100,t0e

mov r0,#0

t0e:

reti

t1isr:

inc r1

cjne r1,#100,t1e

mov r1,#0

t1e:

reti

delay:

mov r2,#10

dly:

mov r3,#250

djnz r3,$

djnz r2,dly

retledtab:

db 3fh,06h,5bh,4fh,66h ;01234db 6dh,7dh,07h,7fh,6fh ;56789end

3樓:做而論道

對兩種物料進行檢測個數,不應該用定時器t0和t1。

而應該使用外部中斷。

想要顯示個數,則要求樓主,先提供顯示電路。

沒有顯示器的電路,就編寫程式,你拿什麼顯示?

用組合語言實現用按鍵控制數碼管顯示數字+1,並迴圈 50

4樓:

第二個到底要實現什麼,沒看懂!

第乙個如下

org 0000h

ljmp main

org 0003h

ljmp int_0

org 0030h

main: mov r3,#0

mov dptr,#tab

setb ea

setb it0

setb ex0

sjmp $

int_0: clr ea

mov a,r3

lcall disp

mov a,r3

cjne a,#9,lp

mov r3,#0

sjmp return

lp: inc r3

return:setb ea

reti

disp: movc a,@a+dptrmov p2,a

rettab: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90hend

5樓:匿名使用者

;共陽數碼管

count equ 30h

sp1 equ p3.6

sp2 equ p3.7

org 0

ajmp main

org 30h

main: mov count,#0

main1: mov a,count

mov b,#10

div ab

mov dptr,#tab

movc a,@a+dptr

mov p2,a

mov a,b

movc a,@a+dptr

mov p1,a

k1: jb sp1,k2

jb sp1,$

lcall dly

jnb sp1,$

inc count

mov a,count

cjne a,#100,main1

ljmp main

k2: jb sp2,k1

jb sp2,$

lcall dly

jnb sp2,$

mov a,count

cjne a,#0,dec1

mov count,#100

dec1: dec count

mov a,count

cjne a,#100,main1

ljmp main

dly: mov r7,#20

d1: mov r7,#248

djnz r7,$

djnz r6,$-4

rettab: db 0c0h,0f9h,0a4h,0b0h,99h,092h,82h,0f8h,080h,090hend

at89c51微控制器怎麼用組合語言讓4個數碼管同時顯示1234?

6樓:大野瘦子

org 00h

ajmp main

org 30h

main: lcall disp

mov 20h,#1

mov 21h,#2

mov 22h,#3

mov 23h,#4

ajmp main

disp: mov a,20h

acall seg7

mov p0,a

setb p2.0

acall dly

clr p2.0

mov a,21h

acall seg7

mov p0,a

setb p2.1

acall dly

clr p2.1

mov a,22h

acall seg7

mov p0,a

setb p2.2

acall dly

clr p2.2

mov a,23h

acall seg7

mov p0,a

setb p2.3

acall dly

clr p2.3

retdly: mov r7,#2

d1: mov r6,#40

djnz r6,$

djnz r7,d1

retseg7: inc a

movc a,@a+pc

retdb        0c0h;0

db        0f9h;1

db        0a4h;2

db        0b0h;3

db        099h;4

db        092h;5

db        082h;6

db        0f8h;7

db        080h;8

db        090h;9end

7樓:

自己要學會仿製寫程式,懂了原理之後就容易理解了,我說一下原理吧:

數碼管動態顯示介面是微控制器中應用最為廣泛的一種顯示方式之一,動態驅動是將所有數碼管的8個顯示筆劃"a,b,c,d,e,f,g,dp"的同名端連在一起,另外為每個數碼管的公共極com增加位選通控制電路,位選通由各自獨立的i/o線控制,當微控制器輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是那個數碼管會顯示出字形,取決於微控制器對位選通com端電路的控制,所以我們只要將需要顯示的數碼管的選通控制開啟,該位就顯示出字形,沒有選通的數碼管就不會亮。通過分時輪流控制各個數碼管的的com端,就使各個數碼管輪流受控顯示,這就是動態驅動。在輪流顯示過程中,每位數碼管的點亮時間為1~2ms,由於人的視覺暫留現象及發光二極體的餘輝效應,儘管實際上各位數碼管並非同時點亮,但只要掃瞄的速度足夠快,給人的印象就是一組穩定的顯示資料,不會有閃爍感。

8樓:匿名使用者

通常的辦法是掃瞄顯示,這樣的話,用12個io口就可以實現了,8位段碼加上4位位碼。程式如下:

dat equ 30h

scanled equ 34h

org 0000h

ljmp main

org 000bh

ljmp t0isr

org 0030h

main:

mov sp,#5fh

mov tmod,#01h

mov th0,#0f4h

mov tl0,#048h

mov p2,#00h

mov scanled,#0

mov 30h,#1

mov 31h,#2

mov 30h,#3

mov 31h,#4

setb ea

setb et0

setb tr0

sjmp $

;--------------------t0isr:

clr tr0

mov th0,#0f4h

mov tl0,#048h

setb tr0

mov dptr,#ledtab

mov r0,#dat

mov a,scanled

add a,r0

mov r0,a

mov a,scanled

jnz t001

mov p2,#01h

sjmp t0dis

t001:

dec a

jnz t002

mov p2,#02h

sjmp t0dis

t002:

dec a

jnz t003

mov p2,#04h

sjmp t0dis

t003:

mov p2,#08h

t0dis:

mov a,@r0

movc a,@a+dptr

cpl a

mov p0,a

inc scanled

mov a,scanled

anl a,#03h

mov scanled,a

pop acc

reti

;--------------------ledtab:

db 0c0h ;"0" 00h

db 0f9h ;"1" 01h

db 0a4h ;"2" 02h

db 0b0h ;"3" 03h

db 99h ;"4" 04h

db 92h ;"5" 05h

db 82h ;"6" 06h

db 0f8h ;"7" 07h

db 80h ;"8" 08h

db 90h ;"9" 09h

;--------------------end

用組合語言程式設計,用組合語言編寫乙個簡單程式

寫一下簡單的演算法吧,先提供乙個簡單的畫點子程式 在螢幕顯示一點或一畫素子程式 輸入引數 bx 行位址 0 479 si 列位址 0 639 dl 顏色 0 15 640 480顯示模式 dot proc near push cx 儲存顏色 push dx mov ax,80 行位址 mul bx ...

怎樣用組合語言讀寫檔案

檔案,要先 建立 和 開啟 還要在其中定位,才能讀寫字元,之後要 關閉 要用到系統功能呼叫等等。至於磁碟的0面0道1扇區的讀寫,是更為低階 深入 的操作,要用到25h 絕對磁碟讀功能 26h 絕對磁碟寫功能。弄不好,會破壞磁碟檔案系統,造成系統的崩潰,不建議施行這個操作。xp有保護機制,一般不讓進行...

微控制器組合語言兩數比較大小,51微控制器用組合語言怎麼程式設計幾個有符號數的比較大小

微控制器有比較指令cmp的嗎,請回答者再看看書吧。可以用cjne指令,它有比較功能,如cjne a,data,label 當a data時,進製位置一,就可以判斷了。程式如下 clr c 先把進製位清零,以防誤判cjne a,data,no equ 不等則轉到no equ,相等則直接順序執行 執行相...