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,相等則直接順序執行 執行相...