本帖最后由 mentooo 于 2021-12-29 12:23 編輯
《實例解讀51單片機完全學習與應用》程序8-15
目標:數碼管顯示1和5
1.jpg (146.64 KB, 下載次數: 38)
下載附件
2021-12-29 12:22 上傳
原代碼如下:Keil調試不正確!!新手求解
- ORG 00H
- START:
- MOV 30H,#1 ; 低位七段數碼管DS0顯示數據
- MOV 31H,#5 ; 高位七段數碼管DS1顯示數據
- MOV R0,#30H ; R0=30H
- MOV R1,#40H ; R1=40H
- MOV R2,#2 ; R2=2
- DP10:
- MOV DPTR,#TABLE ; 裝表
- MOV A,@R0 ; 將R0所指的數據載入A
- MOVC A,@A+DPTR ; 取表
- MOV @R1,A ; 把數據暫時保存在R1所指的地址中
- INC R1 ; R1自增1
- INC R0 ; R0自增1
- DJNZ R2,DP10 ; 如果R2不等于0,說明沒有取完兩個段碼,跳回DP10循環
- MOV R0,#40H ; R0=40H,指向剛才保存段碼的空間
- MOV R1,#2 ; R1=2,段碼共有2個字節數
- DP11:
- MOV R2,#8 ; R2=8,每位顯示數據共有8個段碼,R2作計數器
- MOV A,@R0 ; 把R0指向的段碼數據載入A
- DP12:
- RLC A ; 段碼數據向左移動一位
- MOV P2.0,C ; 串行輸出一位段碼數據
- CLR P2.1 ; 發送位移脈沖
- SETB P2.1 ; 形成上升沿
- DJNZ R2,DP12 ; 判斷是否輸出8位段碼
- INC R0 ; R0自增1
- DJNZ R1,DP11 ; 判斷是否輸出兩個顯示數據
- JMP $
- TABLE: ;七段數碼管顯示數據表(段碼)
- DB 40H,79H,24H,30H,19H ;0,1,2,3,4
- DB 12H,02H,78H,00H,10H ;5,6,7,8,9
- END
復制代碼
|