組合語言程式設計例項---序列控制七段數碼管
阿新 • • 發佈:2019-01-09
序列控制七段數碼管 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