📄 413.asm
字号:
ADC EQU 30h
CLOCK BIT P2.7 ;定义ADC0808时钟位
ST BIT P2.4
EOC BIT P2.6
OE BIT P2.5
PWM BIT P3.7
ORG 00H
SJMP START1
ORG 0BH
LJMP INT_T0
ORG 1BH
LJMP TNT_T1
START1:
MOV ACC,#28H
PUSH ACC
MOV TMOD,#12H
MOV TH0,#20
MOV TL0,#00H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV IE,#8AH
SETB TR0
SETB TR1
WAIT:
CLR ST
SETB ST
CLR ST ;启动AD转换
JB EOC,$ ;等待转换结束
SETB OE
MOV ADC,P0 ;读取AD转换结果
CLR OE
SETB PWM
clr c ;判断是否到了一百度,到了100度或以上,停止加热
mov r7,adc
cjne r7,#0FCH,out
pwmout: jnc out
;PWM输出
MOV A,ADC
LCALL DELAY
CLR PWM
MOV A,#255
SUBB A,ADC
LCALL DELAY
out: jc pwmout
clr c
SJMP WAIT
INT_T0: CPL CLOCK ;提供ADC0808时钟信号
RETI
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;40H是用来存放要定时的循环次数
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
TNT_T1:
POP 40H
PUSH ACC
PUSH PSW
MOV R0,40H
DJNZ R0,FANHUI
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;显示程序
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
START:
mov a,#00h ;初始化
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
go: ;取数程序
LCALL zhuanhuan ;转到 数据转换程序(一)
; setb st
lcall loop ;转到 数据转换程序(二)
lcall DISPLAY ;转到 从译码管显示
LJMP FANHUI
FANHUI: POP PSW
POP ACC
PUSH 40H
RETI
zhuanhuan :
mov a,adc
subb a,#1
; mov A,ADC ;这里把数据 X 4
MOV B,#4
MUL AB
MOV 31H,B
MOV 32H,A ;低位暂存区
MOV A,31H ;处理高位
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;数据转换程序(二)
;;标号: HB2功能:双字节十六进制整数转换成四字节十进制整数
;;入口条件:待转换的双字节十六进制整数在R6(高位)、R7中。
;;出口信息:转换后的三字节十进制整数在R2(高位) 、R3、R4、R5中。
;;影响资源:PSW、A、R2~R7 堆栈需求: 2字节
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
loop:
MOV A,32h
MOV R7,A
MOV A,31h
MOV R6,A
HB2:
CLR A ;BCD码初始化
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节十六进制整数
HB3:
MOV A,R7 ;从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R4 ;BCD码带进位自身相加,相当于乘2
ADDC A,R4
DA A ;十进制调整
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
DJNZ R2,HB3 ;处理完16bit
MOV A,R3 ;将数放到指定的单元格里面
SWAP A
ANL A,#0FH
MOV R2,A
MOV A,R3
ANL A,#0FH
MOV R3,A
MOV A,R4
ANL A,#0FH
MOV R5,A
MOV A,R4
SWAP A
ANL A,#0FH
MOV R4,A
mov 33h,r5 ;存放个位
mov 34h,r4 ;存放十位
mov 35h,r3 ;存放百位
mov 36h,r2 ;存放千位
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;显示程序
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISPLAY:
;百位的管子显示
MOV A,36h
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
lcall aa3
;十位的管子显示
MOV A,35h
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
lcall aa2
;个位的管子显示
MOV A,34h
MOV DPTR, #TABLE
MOVC A,@A+DPTR
ORL A,#80H ;加小数点
MOV P1,A
lcall aa1
;小数点后一位的管子显示
MOV A,33h
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
lcall aa0
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
aa3:
clr p2.0
setb p2.0
clr p2.0
ret
aa2:
clr p2.1
setb p2.1
clr p2.1
ret
aa1:
clr p2.2
setb p2.2
clr p2.2
ret
aa0:
clr p2.3
setb p2.3
clr p2.3
ret
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
DELAY: MOV R6,#1
D1: DJNZ R6,D1
DJNZ ACC,D1
RET
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -