📄 草稿1.asm
字号:
CLR P3.0
SETB EX1
LJMP OVER
BO_4:
MOV 46H,#0E2H
MOV 47H,#0B3H
CLR P3.0
SETB EX1
LJMP OVER
BO_8:
MOV 46H,#0DDH
MOV 47H,#0D1H
CLR P3.0
SETB EX1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
OVER: MOV P0, #00H
SETB P2.5 ;地址锁存
NOP
CLR P2.5
;0111 1100----CS 111 11 A& R/^C ;A&=0为12位转换
;起动A/D 的12位转换
SETB P2.7 ;P2.7用于打开A/D的CE端,打开AD
JB P2.6,$ ;P2.4用于指示转换完比与否,等待转换完毕
CLR P2.7 ;关闭A/D
MOV P0 ,#01H ;读取高8位
SETB P2.5 ;0111 1101------CS 111 11 A& R ;A& R为
NOP ;高8位的读取
CLR P2.5
NOP
mov p0,#0ffh
SETB P2.7
MOV A, P0
MOV R2,A
CLR P2.7 ;高8位读取完毕
MOV P0 ,#03H ;读取低8位
SETB P2.5
NOP ;0111 1111------CS 111 11 A& R
CLR P2.5 ;A& R为低四位+0000的读取
NOP
mov p0,#0ffh
SETB P2.7
MOV A, P0
MOV R3,A
CLR P2.7 ;低8位读取完毕
MOV A,R3 ;12位数据调整
SWAP A
ORL A,#0F0H
MOV R3,A
MOV A,R2
SWAP A
MOV R2,A
ORL A,#0FH
ANL A,R3
MOV R3,A
MOV A,R2
ANL A,#0FH
MOV R2,A
POP A
RETI
;===========外部中断1的中断服务程序==============
;当过零检测电路的脉动冲到来,其下跳沿引起外部中断1
;======= 在此主要进行温度控制程序 ========
INT1: PUSH A
CLR TR0
CLR TR1
MOV TH1,46H
MOV TL1,47H
SETB P3.0
SETB TR1
SETB TR0
;由于导通角的大小为0-10ms,不可忽略,可
;能在些期间会有更优先的中断到来,所以暂时关闭
;P2.6接的是温度控制电路,其高电平时间就是导通角
;此处延时的长短为导通角
;SETB TR0
;SETB TR1
POP A
RETI
;========== 定时器1中断程序 ==============
T1: PUSH A
CLR TR0
CLR P3.0
SETB TR0
POP A
RETI
;=================主程序====================
MAIN:MOV A,48H
CJNE A,#01H,KEYWORK
LCALL DISPLAY
;----------------键盘扫描-------------------
;===========================================
KEYWORK:
SETB P2.3
SETB P2.4
CLR P2.0
CLR P2.1
CLR P2.2
JNB P2.3,KEY0
JNB P2.4,K8
SETB P2.0
JNB P2.3,K1
JNB P2.4,K9
CLR P2.0
SETB P2.1
JNB P2.3,K2
JNB P2.4,K10
SETB P2.0
JNB P2.3,K3
JNB P2.4,K11
CLR P2.0
CLR P2.1
SETB P2.2
JNB P2.3,K4
JNB P2.4,K12
SETB P2.0
JNB P2.3,K5
JNB P2.4,K13
CLR P2.0
SETB P2.1
JNB P2.3,K6
JNB P2.4,K14
SETB P2.0
JNB P2.3,K7
JNB P2.4,K15
LJMP MAIN
K1:LJMP KEY1
K2:LJMP KEY2
K3:LJMP KEY3
K4:LJMP KEY4
K5:LJMP KEY5
K6:LJMP KEY6
K7:LJMP KEY7
K8:LJMP KEY8
K9:LJMP KEY9
K10:LJMP KEY10
K11:LJMP KEY11
K12:LJMP KEY12
K13:LJMP KEY13
K14:LJMP KEY14
K15:LJMP KEY15
;==================键盘扫描部分到此==================
key0:jnb p2.3,$
mov B,#00h
ljmp xswz
key1: jnb p2.3,$
mov B,#01h
ljmp xswz
key2:jnb p2.3,$
mov B,#02h
ljmp xswz
key3:jnb p2.3,$
mov B,#03h
ljmp xswz
key4:jnb p2.3,$
mov B,#04h
ljmp xswz
key5:jnb p2.3,$
mov B,#05h
ljmp xswz
key6: jnb p2.3,$
mov B,#06h
ljmp xswz
key7: jnb p2.3,$
mov B,#07h
ljmp xswz
key8: jnb p2.4,$
mov B,#08h
ljmp xswz
key9: jnb p2.4,$
mov B,#09h
ljmp xswz
key10: jnb p2.4,$
mov B,#0ah
ljmp xswz
KEY11: LJMP MAIN
;jnb p2.4,$
;ljmp COL
KEY12:LJMP MAIN
KEY13: JNB P2.4,$
CLR EX1
SETB P3.0
MOV 48H,#00H ;关比较
LJMP MAIN
KEY14: JNB P2.4,$
SETB E
MOV P1,#0CH ;关光标
LCALL ENABLE
SETB TR0
CLR P3.0
MOV 48H,#01H ;开比较
LJMP MAIN
;==============启动==================
KEY15: JNB P2.4,$
;SETB EX0 ;允许外部中断0,下跳沿中断
;SETB TR1
ql:MOV P1,#01H; 清零
ACALL ENABLE
MOV P1,#38H;8位点阵方式
ACALL ENABLE
MOV P1,#0FH;开显示
ACALL ENABLE
LJMP MAIN
;==============================================
xswz:
inc r0
mov a,B
mov @r0,a
mov p1,R4
lcall enable
mov dptr ,#table4
call write5
LJMP MAIN
write1: ;显示字符串
mov r1,#00h
a1:mov a,r1
movc a,@a+dptr
call write2
inc r1
cjne a,#20H,a1
Ret
write2: ;共用
mov p1,a
setb rs
clr rw
clr e
call delay
setb e
INC R4
ret
WRITE3:
MOV A,@R1
MOVC A,@A+DPTR
CALL WRITE2
RET
;WRITE4:
;MOV A,R1
;MOVC A,@A+DPTR
;CALL WRITE2
;RET
WRITE5:
MOV A,@R0
MOVC A,@A+DPTR
CALL WRITE2
RET
;================液晶显示====================
DISPLAY:MOV R4,#080H ;显示字符串"COL: "
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE1
CALL WRITE1
;===============
MOV R4,#085H
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE4 ;??????????
MOV R1,#30H
GO:CALL WRITE3 ;显示温度
INC R1
MOV A,R1
CJNE A,#35H,GO
INC R4
;=================
SET_0:MOV R4,#0C0H
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE2
CALL WRITE1 ;显示字符串"SET: "
RET
ENABLE:CLR RS
CLR RW
CLR E
NOP
ACALL DELAY
SETB E
RET
delay:mov YS1,#100
d1:mov YS2,#100
d2:djnz YS2,d2
djnz YS1,d1
ret
;=============================================
TABLE1:DB 43H,4FH,4CH,3AH,20H
TABLE2:DB 53H,45H,54H,3AH,20H
table4:db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,2eh,20h
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -