📄 temperature.asm
字号:
$INCLUDE(C8051F310.INC) ; Register definition file.
ORG 00H
LJMP Configure
ORG 00FFH
Configure:
MOV OSCICN,#83H
MOV OSCXCN,#00H
MOV CLKSEL,#00H
MOV XBR0,#01H
MOV XBR1,#0C0H
MOV PCA0MD,#00H //禁止看门狗
MOV PCA0CN,#00H
ANL PCA0MD, #NOT(040h)
; Port configuration (1, Push Pull Output)
mov P0MDOUT, #010h ; Output configuration for P0 0001 0000 P0.4 输出方式为推挽方式,其它为漏极开路
mov P1MDOUT, #000h ; Output configuration for P1
mov P2MDOUT, #000h ; Output configuration for P2
mov P3MDOUT, #000h ; Output configuration for P3 0001 1000 P3.3 和 P3.4 为推挽方式,用来做测试引脚
mov P0MDIN, #0FFh ; Input configuration for P0 1111 1111 端口P0对应数字输入
mov P1MDIN, #0FFh ; Input configuration for P1
mov P2MDIN, #0FFh ; Input configuration for P2
mov P3MDIN, #000h ; Input configuration for P3
mov P0SKIP, #000h ; Port 0 Crossbar Skip Register
mov P1SKIP, #000h ; Port 1 Crossbar Skip Register
mov P2SKIP, #000h ; Port 2 Crossbar Skip Register
CLR AD0EN
MOV REF0CN,#00001110B
MOV AMX0P,#00011110B //ADC0选择温度传感器,正输入
MOV AMX0N, #00011111B //GND为负输入
MOV ADC0CN,#10000000B
;**
mov ADC0H, #000h ; ADC Data MSB
mov ADC0L, #000h ; ADC Data LSB
mov ADC0LTH, #000h ; ADC Less-Than High Byte Register
mov ADC0LTL, #000h ; ADC Less-Than Low Byte Register
mov ADC0GTH, #0FFh ; ADC Greater-Than High Byte Register
mov ADC0GTL, #0FFh ; ADC Greater-Than Low Byte Register
MOV SCON0,#10H
mov PCON, #000h ; Power Control Register
mov TCON, #000h ; Timer Control Register
mov CKCON, #00h ;xitong shizhong
mov TH1, #96h ; Timer 1 High Byte //********************************************
mov TL1, #96h ; Timer 0 Low Byte
mov TMOD, #20h ; Timer Mode Register //001h*************************************
SETB TR1
mov RSTSRC, #000h ; Reset Source Register
RoomCode EQU 9800h
LED2 EQU P2.2
LED7 EQU P2.7
TEMPCODE EQU 30H
MOV A,#00H
CLR TI0
MOV SBUF0,A
JNB TI0,$
CLR TI0
MOV A,#0CCH //77H 为M 的ASC码
CLR TI0
MOV SBUF0,A
JNB TI0,$
CLR TI0
MOV A,#11H
MOV SBUF0,A
JNB TI0,$
CLR TI0
ANL PCA0MD, #NOT(040h) ; clear Watchdog Enable bit
MOV DPTR,#0300H
MOV A,#00H
MOVC A,@A+DPTR
mov dptr,#0000h
XRL A,#01H
JZ Main2
Main:
MOV A,#0FFH
inc dptr
MOV A,DPH
XRL A,#20H
JZ LAST
MOV ADC0CN, #090H //启动AD
JNB AD0INT,$
CLR AD0BUSY
MOV A,ADC0H
RL A
RL A
RL A
RL A
RL A
RL A
ANL A,#0C0H
MOV R0,A
MOV A,ADC0L
RR A
RR A
ANL A,#3FH
ADD A,R0
mov sbuf0,a
jnb ti0,$
clr ti0
LJMP Main
Main2:
MOV DPTR,#0000H
Main2_2:
MOV A,#0FFH
INC DPTR
MOV A,DPH
XRL A,#20H
JZ LAST2
MOV ADC0CN, #090H //启动AD
JNB AD0INT,$
CLR AD0BUSY
MOV A,ADC0L
mov sbuf0,a
jnb ti0,$
clr ti0
LJMP Main2_2
LAST:
MOV FLSCL,#10000000B
CLR EA //1 关中断
ORL PSCTL,#00000010B
ORL PSCTL,#00000001B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#01H
MOVX @DPTR,A
ANL PSCTL,#11111101B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#01H
MOVX @DPTR,A
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0301H
MOV A,#02H
MOVX @DPTR,A
ANL PSCTL,#11111110B
MOV A,#ADC0H
MOV A,#00H
LJMP ENDSYS
LAST2:
MOV FLSCL,#10000000B
CLR EA //1 关中断
ORL PSCTL,#00000010B
ORL PSCTL,#00000001B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#01H
MOVX @DPTR,A
ANL PSCTL,#11111101B
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0300H
MOV A,#03H
MOVX @DPTR,A
MOV FLKEY,#0xA5
MOV FLKEY,#0xF1
MOV DPTR,#0301H
MOV A,#04H
MOVX @DPTR,A
ANL PSCTL,#11111110B
MOV A,#ADC0H
MOV A,#00H
LJMP ENDSYS
ENDSYS:
AJMP $
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -