📄 nuanfeng.asm
字号:
原程序如下
;4M,4CLOCK,每个指令1U
;======================================================================================
;本程序为暖风机器所写,2004-03-24开始开发
;======================================================================================
R0 == 0X00
TCC == 0X01
PC == 0x02
R3 == 0X03
R4 == 0X04
P5 == 0X05
LED == 3
KEY == 0 ;按键
NTS == 1 ;光敏电阻
R10K == 2 ;标准电阻
P6 == 0X06
REM == 7 ;遥控接收
DATA == 7
WR == 6
CS == 5
BELL == 2
JDQ1 == 0
JDQ2 == 1
YT == 3
FS == 4
IOC5 == 0X05
IOC6 == 0X06
IOC7 == 0X07
IOCA == 0X0A
IOCB == 0X0B
IOCC == 0X0C
IOCD == 0X0D
IOCE == 0X0E
IOCF == 0X0F
RF == 0X0F
C == 0
Z == 2
;-------------------------------------------
;全局变量
;--------------------------------------------
RKEY == 0X28 ;键值保存
R_A == 0X29
R_R3 == 0X2A
TEMP == 0X2B
STEMP == 0X2C
STIME == 0X2D ;0.5到7.5各放半个字节,高字节实际时间,底字节设置时间
FTIMES == 0X2E ;闪烁7次
R250MS == 0X2F
R05S == 0X30
R30M == 0X31
R66MS == 0X32
R200MS == 0X33 ;奉命器发生
R1M == 0X18
R15S == 0X19
ADID == 0X1A
R10KTC1 == 0X20 ;求平均值
R10KTC2 == 0X21
R10KTC3 == 0X22
R10KTC4 == 0X23
RNTSTC1 == 0X24
RNTSTC2 == 0X25
RNTSTC3 == 0X26
RNTSTC4 == 0X27
D0 == 0X34;0X3A~0X3F为显示存储空间!!!
FLAG == 0X1B
FHWKEY == 0
F250MS == 1
F33MS == 2
F33MSS == 3 ;蜂鸣器发生标志
FLED == 4
F05S1 == 5
;FOFFPOWER== 6
F05S == 7
FLAG1 == 0X1C ;开关状态保存
F1 == 1
F2 == 2
F3 == 3
F4 == 4
FKO == 5 ;开关键值保存
FKS == 6 ;摇头保存
FTIME == 0
FTEMP == 7
R30S == 0X1D
temp1 == 0x1e
;-------------------------------------------
;局部变量
;--------------------------------------------
DIV1 == 0X10
DIV2 == 0X11
DIV3 == 0X12
CHU1 == 0X13
YU == 0X14
SHANG1 == 0X15
SHANG2 == 0X16
DIV_CNT == 0X17
B3 == DIV1
B8 == DIV2
RX == DIV3
RTCC == DIV1
RKEYTC == DIV2;TCC保存
DCNT2 == DIV_CNT
B == CHU1
DCNT1 == YU ;注意,DCNT,与DIV1~3,SHANG1~2不能复用
R_ADL == SHANG1
R_ADH == SHANG2
BINARY == DIV1 ;BINARY<0X64
BCD == DIV2
BCD_CNT == DIV3
; KS == 1;摇头
; KH == 2;加热
; KT == 3;间设定
; KTE == 4;温度
; KP == 5;+按键
; KD == 6;-按键
; KO == 7;开关按键
;===================================================================
ORG 000H
CALL INIT
MAIN: CALL FANGDIAN ;放电
CALL HW_TEST ;红外检测,30ms
CALL MAIN_AD ;包括按键检测与处理,温度检测与处理
CALL SYSTIME
CALL MAINDISPLAY
JMP MAIN
ORG 008H
MOV R_A,A
SWAP R_A
SWAPA R3
MOV R_R3,A
CLR RF
BS FLAG,F33MS ;
bs flag,f33mss
DJZ R250MS
JMP TCC_RETURN
MOV A,@8;
MOV R250MS,A
BS FLAG,F250MS
DJZ R05S
JMP TCC_RETURN
BS FLAG,F05S
BS FLAG,F05S1
MOV A,@2
MOV R05S,A
DJZ R1M
JMP TCC_RETURN
MOV A,@250;120;由于250ms加长,所以此处减115
MOV R1M,A
DJZ R30M
JMP TCC_RETURN
MOV A,@30
MOV R30M,A
MOV A,STIME
AND A,@0XF
JBS R3,Z
JMP TCC_RETURN0
BC P6,JDQ1
BC P6,JDQ2
BC FLAG1,FKO
JMP TCC_RETURN
TCC_RETURN0: DEC STIME
TCC_RETURN: SWAPA R_R3
MOV R3,A
SWAPA R_A
RETI
PRTTAB: ADD PC,A
JMP PRT0
JMP PRT1
JMP PRT2
JMP PRT3
JMP PRT4
JMP PRT5
JMP PRT6 ;益处
JMP PRT7 ;益处
TEMPTAB0: ADD PC,A
RETL @0X9f
RETL @0Xa4
RETL @0Xa9
RETL @0Xae
RETL @0Xb3
RETL @0Xb8
RETL @0Xbe
RETL @0Xc4
RETL @0Xca
RETL @0Xd0
RETL @0Xd6
RETL @0Xdd
RETL @0Xe4
RETL @0Xeb
RETL @0Xf2
RETL @0XFF;fa
TEMPTAB1: ADD PC,A
RETL @0X02
RETL @0X0a
RETL @0X12
RETL @0X1b
RETL @0X24
RETL @0X2e
RETL @0X38
RETL @0X42
RETL @0X4d
RETL @0X58
RETL @0X63
RETL @0X6f
RETL @0X7c
RETL @0X88
RETL @0X96
RETL @0Xa4
RETL @0Xb2
RETL @0Xc1
RETL @0Xd1
RETL @0Xe1
RETL @0XFF;f2
TEMPTAB2: ADD PC,A
RETL @0X04
RETL @0X16
RETL @0X2a
RETL @0X3d
RETL @0X52
RETL @0X68
RETL @0X7f
RETL @0X96
RETL @0Xaf
RETL @0Xc8
RETL @0Xe3
RETL @0XFF;ff
TEMPTAB3: ADD PC,A
RETL @0X1c
RETL @0X3a
RETL @0X5a
RETL @0X7b
RETL @0X9e
RETL @0Xbf;???
RETL @0Xff;e8
TEMPTAB4: ADD PC,A
RETL @0X0f
RETL @0X39
RETL @0X64
RETL @0Xa5
RETL @0Xc0
RETL @0Xff;f2
TEMPTAB5: ADD PC,A
RETL @0X26
RETL @0X5c
RETL @0X95
RETL @0XFF;b2
TEMPH: ADD PC,A
RETL @80 ;69度,数据表只有,
RETL @64
RETL @43
RETL @31
RETL @24
RETL @18
TIMETABLE: ADD PC,A
RETL @00
RETL @05
RETL @10
RETL @15
RETL @20
RETL @25
RETL @30
RETL @35
RETL @40
RETL @45
RETL @50
RETL @55
RETL @60
RETL @65
RETL @70
RETL @75
REMOTETAB: ADD PC,A
RETL @0XFF ;0
RETL @0XA0 ;1
RETL @0X20 ;2
RETL @0X10 ;3
RETL @0X10 ;4
RETL @0X80 ;5
RETL @0X00 ;6
RETL @0X90 ;7
;=====================================================================================
;按键检测,按键值放在RKEY中,底半字节为检测到的键值,高半字节为上次检测到的值
;RKEY的最高位为有按键标志
;====================================================================================
;=============================================================================================
READKEY:JBC RKEY,7
RET ;一样,有按键,且是一直按住,则退出
JBC FLAG1,FKO
JMP READK
MOV A,RKEYTC
XOR A,@7
JBS R3,Z
RET
READK: MOV A,RKEYTC
MOV RKEY,A
BS RKEY,7
BS FLAG,FLED
AND A,@7
ADD PC,A
JMP RKEY0
JMP RKEY1
JMP RKEY2
JMP RKEY3
JMP RKEY4
JMP RKEY5
JMP RKEY6
JMP RKEY7
WRITE: MOV A,B ;放在ROM255以前
ADD PC,A
JMP ST0
JMP ST1
JMP ST2
JMP ST3
JMP ST4
JMP ST5
JMP ST6
JMP ST7
JMP ST8
JMP ST9
RKEY0: ;BC FLAG1,FTIME
;BC FLAG1,FTEMP
;CLR RKEY
RET
RKEY1: ;BC FLAG1,FTIME
;BC FLAG1,FTEMP
JBS P6,3
JMP RK11
BC P6,3 ;原来为开,则关
BC D0+8,0
BC D0+1,0
RET
RK11: BS P6,3 ;原来为开,则关
BS D0+8,0
BS D0+1,0
RET
RKEY2: ;BC FLAG1,FTIME
;BC FLAG1,FTEMP
MOV A,P6 ;加热 ,输出控制
AND A,@3
ADD PC,A
JMP RK20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -