三位表头,汇编语言程序包含四位转换(没有编译)
- 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
复制代码 |