1樓:胖大海君
嘿嘿 還是俺來幫你回答吧
1 這是乙個一位的7段數碼管顯示控制程式,通過p3口連線了乙個7段數碼管(靜態顯示,共陽極)。
2 該程式就是利用這個一位的7段數碼管分時迴圈顯示0~9、a~f共16個十六進製制數碼。
3 在程式儲存器存放的**tab: 是共陽極顯示編碼 應該是0~9、a~f共16個顯示編碼
可惜少了一半:
現在給你補全:
tab:db 0c0h, 0f9h, 0a4h,0b0h,99h,92h,82h,0f8h,
db 80h, 90h, 88h, 82h, 0c6h,0a1h,86h,8eh
4 參考:
org 00h :微控制器啟動位址
start:mov r2,#0 ;要顯示的第乙個數為0
mov r5,#16 ;要迴圈顯示的次數16次
main: mov dptr,#tab ;取顯示編碼**首位址
mov a,r2 ; 取要顯示的數(在r2中)
movc a,@a+dptr ;查表 求要顯示的數的編碼
mov p3,a ;送p3口驅動7段數碼管顯示
inc r2 ;修改要顯示的下乙個數(要顯示的數增1)
lcall delay ; 呼叫延時子程式(穩定顯示)
djnz r5,main ;迴圈顯示次數減1 不等於0 繼續顯示
jmp start ;從新轉主程式 開始新一輪的顯示
delay:mov r0,#5 ;延時子程式
delay0:mov r7,#200
delay1:mov r6,#250
djnz r6,$
djnz r7,delay1
djnz r0,delay0
ret ;子程式返回
tab:db 0c0h, 0f9h, 0a4h,0b0h,99h,92h,82h,0f8h ;顯示編碼**
end ;結束彙編、
滿意 就請選擇正確的回答
2樓:安裝機電
;程式從00h開始存貯
;名為start的程式段開始;將立即數0放入暫存器r2中;將立即數16放放r5中;
3樓:匿名使用者
org 00h 彙編從00h開始
start:mov r2,#0 將數0送給r2
mov r5,#16 將數16送給r5
main: mov dptr,#tab 將tab的位址給資料指標dptr
mov a,r2 將r2中的值(就是0)給r2
movc a,@a+dptr (查表)將0c0h給a
mov p3,a 將a中的數值(就是0c0)給p3口
inc r2 r2加1
lcall delay 呼叫延時程式delay
djnz r5,main (迴圈轉移指令)若r5-1不等於0就執行main,等於0就順序執行
jmp start 跳轉到start
delay:mov r0,#5 將#5給r0
delay0:mov r7,#200 將#200給r7
delay1:mov r6,#250 將250給r6
djnz r6,$ 若r6-1不等於0就繼續執行這條指令,等於零就順序執行
djnz r7,delay1 若r7-1不等於0就繼續執行delay1,等於零就順序執行
djnz r0,delay0 若r6-1不等於0就繼續執行delay0,等於零就順序執行
ret 返回
tab:db 0c0h, 0f9h, 0a4h,0b0h,99h,92h,82h,0f8h **
end 結束
純手寫,如果明白了,就選為滿意答案吧
微控制器程式注釋(大致注釋)
4樓:巨蛋一號
org 00h
mov r5,#00h
mov r7,#00h
djnz r7,$
mov r7,#10h
mov r6,#06h
mov r1,#35h
l1: mov a,r7
mov dptr,#table
movc a,@a+dptr
mov @r1,a
dec r1
inc r7
djnz r6,l1
start: orl p2,#0ffh
mov r4,#06h
mov r0,#40h
clear: mov @r0,#00h
inc r0
djnz r4,clear
l2: mov r3,#0f7h
mov r1,#00h
l3: mov a,r3
mov p1,a
mov a,p1
mov r4,a
setb c
mov r5,#04h
l4: rlc a
jnc keyin
inc r1
djnz r5,l4
call disp
mov a,r3
setb c
rrc a
mov r3,a
jc l3
jmp l2
keyin: mov a,r1
xrl a,#0bh
jz x3
mov a,r1
xrl a,#0fh
jz x4
mov r7,#10
d1: mov r6,#24
djnz r6,$
djnz r7,d1
d2: mov a,p1
xrl a,r4
jz d2
mov a,r1
mov dptr,#table
movc a,@a+dptr
mov r7,a
xrl a,#0ah
jz set0
mov a,r7
xrl a,#0bh
jz start
mov a,r7
xrl a,#0ch
jz l2
mov a,r7
xrl a,#0dh
jz l2
mov a,r7
xch a,40h
xch a,41h
xch a,42h
xch a,43h
xch a,44h
xch a,45h
call disp
jmp l2
x3: jmp disp2
x4: jmp comp
disp:mov r0,#45h
disp1: mov a,@r0
add a,#50h
mov p0,a
call delay
dec r0
mov a,@r0
add a,#40h
mov p0,a
call delay
dec r0
mov a,@r0
add a,#30h
mov p0,a
call delay
dec r0
mov a,@r0
add a,#20h
mov p0,a
call delay
dec r0
mov a,@r0
add a,#10h
mov p0,a
call delay
dec r0
mov a,@r0
add a,#00h
mov p0,a
call delay
retset0: mov r2,#06hmov r0,#40h
mov r1,#30h
e1: mov a,@r0
xch a,@r1
inc r0
inc r1
djnz r2,e1
call delay
e2: jmp start
comp: mov r1,#45h
mov r0,#35h
mov r2,#06h
c1: mov a,@r1
xrl a,@r0
jnz c3
dec r1
dec r0
djnz r2,c1
clr p2.0
mov r2,#200
c2: mov r6,#248
djnz r6,$
djnz r2,c2
c3: inc r5
mov a,r5
mov r5,a
cjne r5 ,#03h,c4
clr p2.1
mov r5,#00h
c4: jmp start
disp2: mov r0,#35h
call disp
mov a,p1
xrl a,r4
jz disp2
call delay
jmp start
delay: mov r7,#c3
d3: mov r6,#248
djnz r7,d3
retorg 300h
table: db 01h 02h 03h 0chdb 04h 05h 06h 0dh
db 07h 08h 09h 0eh
db 0ah 00h 0bh 0fh
db 01h 02h 03h 04h05h 06hend
5樓:做而論道
看了一遍。
好像,是個密碼鎖的程式。
6樓:蜻蜓點水
你以為是貼吧啊,1樓何在
注釋一下 微控制器程式
微控制器程式,微控制器的應用
寫錯了吧,0x10和0x01能一樣嗎?if adc contr 0x10 測試其第5位是否是1 相當於 if adc contr 0x10 0 while adc contr 0x10 測試其第5位 d4 是否是0 乙個是測試 1 乙個是測試 0x10 能一樣麼?微控制器的應用 微控制器的應用領域 ...
微控制器(組合語言)程式,微控制器組合語言
開發當bai然是用c,又快又易懂好維 du護,但是想要優zhi化程式dao還是要懂彙編的,要不然實回現同樣乙個功能答的程式,好的程式設計師可以把程式設計得又短又快,而不做優化的可能會又臭又長,2k以下可以搞定的,你非要搞到4k以上去那最終產品的成本每個至少會相差幾毛到一兩塊錢,而且成本公升高時質量卻...
微控制器C語言程式
define uint unsigned int就是用unit替換unsigned int,unsigned int是c語言關鍵字,unit比較簡單 void delayms uint x 定義乙個函式,無返回值,引數是個 無符號整形的變數叫 x uchar 上面不是定義了unsigned char...