三位表頭,匯編語言程序包含四位轉換(沒有編譯)
- ADC_CONTR EQU 0BCH ;ADC控制寄存器 ;;;IC:15L204EA,內部振蕩6M,不分頻,3.26V/256=0.0127V,0v-3.26v;;;;
- ADC_RES EQU 0BDH ;ADC高8位結果
- P1ASF EQU 09DH ;P1口第2功能控制寄存器
- JU1 DATA 32H
- JU2 DATA 33H
- JU3 DATA 34H
- JU4 DATA 35H
- JU5 DATA 36H
- ORG 0000H
- LJMP MAIN1
- ORG 0040H
- MAIN1: MOV SP,#7FH
- LCALL INIT_ADC
- MAIN2: LCALL GET_ADC_RESULT ;讀取高8位結果
- MOV A,ADC_RES
- MOV B,#07FH ;電壓比127,改變測量范圍,修改電壓比
- MUL AB
- MOV R0,A ;低8位結果
- MOV R1,B ;高8位結果
- ACALL BCD
- ; MOV A,JU2 ;四位十進制數轉四位BCD碼顯示
- ; MOV DPTR,#TAB ;千分位數,P3.4
- ; MOVC A,@A+DPTR
- ; MOV P2,A
- ; MOV P3,#0EFH
- ; ACALL YS3
- MOV A,JU4 ;百分位數,P3.5
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P2,A
- MOV P3,#0DFH
- ACALL YS3
- MOV A,JU3 ;十分位數,P3.6
- MOV DPTR,#TAB1
- MOVC A,@A+DPTR
- MOV P2,A
- MOV P3,#0BFH
- ACALL YS3
- MOV A,JU5 ;個位數,P3.7
- MOV DPTR,#TAB ;個位數帶小數點顯示
- MOVC A,@A+DPTR
- MOV P2,A
- MOV P3,#7FH
- ACALL YS3
- LJMP MAIN2
- GET_ADC_RESULT: ;讀取ADC結果
- PUSH ACC
- MOV ADC_CONTR,#11101011B ;ADC控制寄存器__開ADC電源1,最高轉換速度11,ADC_FLAG軟件標志位清0,
- ;ADC_START啟動1,轉換通道001(P1.3)
- NOP ;等待4個NOP
- NOP
- NOP
- NOP
- WAIT:MOV A,#00010000B ;等待ADC轉換完成,判斷ADC_FLAG是否完成,等于1
- ANL A,ADC_CONTR
- JZ WAIT ;AD轉換未完成,繼續等待
- ANL ADC_CONTR,#11101011B ;結束標志位ADC_FLAG清零,ADC_START位清零,停止A/D等待
- POP ACC
- RET
- INIT_ADC: ;初始化ADC
- MOV P1ASF,#11B ;設置P1.3口為AD口
- MOV ADC_RES,#0 ;清除結果寄存器
- MOV ADC_CONTR,#11101011B ;ADC控制寄存器--開ADC電源,最高轉換速度11
- MOV A,#2 ;ADC上電并延時
- LCALL DELAY
- RET
- DELAY:MOV R2,A ;軟件延時
- CLR A
- MOV R0,A
- MOV R1,A
- DELAY1:
- DJNZ R0,DELAY1
- DJNZ R1,DELAY1
- DJNZ R2,DELAY1
- RET
- YS3: MOV R4,#40 ;延時程序2
- D2: MOV R5,#250
- DJNZ R5,$
- DJNZ R4,D2
- RET
- BCD: MOV R2,#00h ;四位十六進制數轉五位十進制數
- MOV R3,#00h
- MOV R4,#00h
- MOV R5,#16
- LOOP: CLR C
- MOV A,R0
- RLC A
- MOV R0,A
- MOV A,R1
- RLC A
- MOV R1,A
- MOV A,R4
- ADDC A,R4
- DA A
- MOV R4,A
- MOV A,R3
- ADDC A,R3
- DA A
- MOV R3,A
- MOV A,R2
- ADDC A,R2
- MOV R2,A
- DJNZ R5,LOOP
- MOV A,R4
- MOV B,#16
- DIV AB
- MOV JU1,A
- MOV JU2,B
- MOV A,R3
- MOV B,#16
- DIV AB
- MOV JU3,A
- MOV JU4,B
- MOV JU5,R2
- RET
- TAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H
- TAB1: DB 040H,079H,024H,030H,019H,012H,02H,078H,00H,010H
- END
復制代碼 |