|
;=================================================================
;程序編寫人:蘭建文 ;編寫地點:湖南源點IC培訓機構 ;時間:2009年7月3日上午 星期五 ;功能:本程序實現液晶顯示電動車速度功能,速度范圍(0-50KM/H) ;=======================開始初始化================================ CS BIT P3.4 ;設置使能口 SCLK BIT P3.3 ;設置時鐘脈沖口 ADOUT BIT P3.5 ;設置數據輸出口 PIANXUAN EQU P1 ;設置片選口 SHUCHU EQU P2 ;========================系統程序================================== ORG 0000H JMP MAIN ORG 30H ;=========================主程序=================================== MAIN: MOV A,#0 SETB ADOUT SETB SCLK CLR SCLK CLR CS CALL READ SETB CS CALL HBCD CALL DISPLAY JMP MAIN ;=========================讀子程序=========================== ;輸入條件:待轉化的單字節十六進制整數在累加器A中。 ;輸出信息:轉化后的BCD碼(十位和個位)仍在累加器A中,百位在R3中。 ;影響資源:PSW、A、B、R3 堆棧需求:2字節 ;============================================================ READ: MOV R1,#08H LL: SETB SCLK ;設置下降沿 MOV C,ADOUT RLC A CLR SCLK DJNZ R1,LL RET ;=====================BCD轉化子程序========================= ;輸入:"R2、R3、R6" ;輸出:"P0口" ;實現的功能:把R2、R3、R6的數輸出到P0口顯示 ;============================================================ HBCD: MOV B,#9 DIV AB MOV R5,A CJNE R5,#28,JIXU MOV A,#50 JMP NEXT JIXU:MOV B,#7 MUL AB MOV B,#10 DIV AB ADD A,R5 NEXT:MOV B,#100 ;分離百位,放在R3中 DIV AB MOV R3,A MOV A,#10 ;繼續分離十位和個位 XCH A,B DIV AB MOV R2,A MOV R6,B RET ;========================顯示子程序========================== ;輸入:"A" ;輸出:"P0口" ;實現的功能:把A的數輸出到P0口顯示 ;============================================================ DISPLAY:MOV R0,#50 CC:MOV DPTR,#TAB MOV A,R2 MOVC A,@A+DPTR MOV SHUCHU,A ;顯示十位 MOV PIANXUAN,#01H CALL DELAY MOV SHUCHU,#0FFH MOV A,R6 MOV DPTR,#TAB MOVC A,@A+DPTR MOV SHUCHU,A ;顯示個位 MOV PIANXUAN,#02H CALL DELAY MOV SHUCHU,#0FFH DJNZ R0,CC RET ;========================延時程序============================ ;輸入;無 ;輸出: 無 ;實現的功能:延時一段時間 ;============================================================ DELAY: MOV R4,#5 MOV R5,#200 D1: NOP DJNZ R5,$ DJNZ R4,D1 RET ;=======================共陽查表數據========================== TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;=========================程序結束================================= END
|
|