📄 2g4rx.c
字号:
;---------------------------------------------------------
;A0--------CS
;A1--------SK
;A2--------DI
;A3--------DO
;----------------------------------------------------------
LIST P=6614
ROMSIZE=4096 ;000H-7FFH
;F=4M
IE EQU 00H
IRQ EQU 01H
TM0 EQU 02H
BTM EQU 03H
T0L EQU 04H
T0H EQU 05H
PORTA EQU 08H
PORTB EQU 09H
PCBOND EQU 0AH
PACR EQU 0BH
PBCR EQU 0CH
LPD EQU 0DH
TBR EQU 0EH
INX EQU 0FH
DPL EQU 10H
DPM EQU 11H
DPH EQU 12H
CONPO EQU 13H ;CON THE PORTA AS ALARM UTPUT&HEAVY LOAD&LCD
OXCON EQU 14H ;ALARM ENVELOPE CON
DUTY EQU 15H ;CHANNGE LCD DUTY
LCDCON EQU 16H
;-------------------------------------
TMP EQU 20H
TMP1 EQU 21H
TMP2 EQU 22H
ADDRESSL EQU 23H
ADDRESSH EQU 24H
DATAL EQU 25H
DATAH EQU 26H
DATAL1 EQU 27H
DATAH1 EQU 28H
DCNT1 EQU 29H
DCNT2 EQU 2AH
DCNT3 EQU 2BH
SDATA EQU 2CH
RDATA EQU 2DH
CHNUM EQU 2EH
CHFLAG EQU 2FH
VOL EQU 30H
VFLAG EQU 31H
;-------------------------------------
CNT1 EQU 32H
FAUTOCH EQU 33H
WAPCTRL EQU 34H
MUFLAG EQU 35H
FPWDN EQU 36H
FREAD EQU 37H
VOL1 EQU 38H ;1H-4H
VOL2 EQU 39H ;5H-6H,COL
S123 EQU 3AH
ASBT EQU 3BH
ID0H EQU 3CH
ID0L EQU 3DH
ID1H EQU 3EH
ID1L EQU 3FH
ID2H EQU 40H
ID2L EQU 41H
YEARH EQU 42H
YEARL EQU 43H
MONTHL EQU 44H
MONTHH EQU 45H
FLAGID EQU 46H
DCNT4 EQU 47H
FLAGR EQU 48H
;-------------------
FLAGC EQU 49H
;------------------------------------
;PA0----DATA_OUT
;PA1----SEN
;PA2----SDA
;PA3----SCK
;----------------------
ORG 00H
JMP RESET
ORG 01H
RTNI ;JMP INTEXT
ORG 02H
RTNI ;JMP INT0
ORG 03H
RTNI ;JMP INT1
ORG 04H
RTNI
;------------------------------
SETMID: ;设置年月0405
LDI YEARH,0H
LDI YEARL,4H
LDI MONTHL,5H
LDI MONTHH,0H
RTNI
;------------------------------
;SETID,80,81,82
;50H,51H,52H
;-----------------------
SETCID LDI ID2H,08H ;设置厂家码
LDI ID2L,08H ;8866
LDI ID1H,06H
LDI ID1L,06H
LDI ID0H,00H
LDI ID0L,01H
;----------------------------
LDI ADDRESSL,00H
LDI ADDRESSH,05H
LDA ID0H,0H
STA DATAH,0H
LDA ID0L,0H
STA DATAL,00H
CALL AWRITE ;写入EEPROM
CALL D100MS
LDI ADDRESSL,01H
LDI ADDRESSH,05H
LDA ID1H,0H
STA DATAH,0H
LDA ID1L,0H
STA DATAL,00H
CALL AWRITE ;写入EEPROM
CALL D100MS
LDI ADDRESSL,02H
LDI ADDRESSH,05H
LDA ID2H,0H
STA DATAH,0H
LDA ID2L,0H
STA DATAL,00H
CALL AWRITE ;写入EEPROM
RTNI
DISPA: ;显示A
LDI DPL,0H
LDI DPM,0H
LDI DPH,6H
LDI TMP,07H
STA INX,0H
LDI DPL,1H
LDI TMP,7H
STA INX,0H
RTNI
DISPAI: ;显示AA
LDI DPL,0H
LDI DPM,0H
LDI DPH,6H
LDI TMP,06H
STA INX,0H
LDI DPL,1H
LDI TMP,0H
STA INX,0H
;-----------------------------
LDI DPL,2H
LDI TMP,07H
STA INX,0H
LDI DPL,3H
LDI TMP,07H
STA INX,0H
RTNI
DISPAAI: ;显示AAI
LDI DPL,0H
LDI DPM,0H
LDI DPH,6H
LDI TMP,06H
STA INX,0H
LDI DPL,1H
LDI TMP,0H
STA INX,0H
;-----------------------------
LDI DPL,2H
LDI TMP,07H
STA INX,0H
LDI DPL,3H
LDI TMP,07H
STA INX,0H
;----------------------------------
LDI DPL,4H
LDI TMP,07H
STA INX,0H
LDI DPL,5H
LDI TMP,07H
STA INX,0H
;----------------------------------
LDI DPL,06H
LDI TMP,0H
STA INX,0H
LDI DPL,7H
LDI TMP,0H
STA INX,0H
RTNI
;----------------------------
D100US ;DELAY 100US
LDI DCNT1,0H
NOP
NOP
D100US1 NOP ;1
NOP ;1
NOP
NOP
SBIM DCNT1,1H ;1
BNZ D100US1 ;1
RTNI
;--------------------------------
D50MS LDI DCNT2,08H ;延时子程序
JMP D100MS1
D100MS LDI DCNT1,0H
D100MS1 LDI DCNT2,0H
D100MS2 LDI DCNT3,0H
D100MS3 SBIM DCNT3,1H
BNZ D100MS3
SBIM DCNT2,1H
BNZ D100MS2
SBIM DCNT1,1H
BNZ D100MS1
RTNI
D500MS: LDI DCNT4,5H
JMP D1000MS1
D1000MS:
LDI DCNT4,0AH
D1000MS1:
CALL D100MS
SBIM DCNT4,1H
BNZ D1000MS1
RTNI
;================================
;SHL ;左移4位
;SDATA ;左移数据
;RDATA ;结果数据
;================================
SHL: LDI RDATA,0H
LDA SDATA,0H
BA0 SHL1
JMP SHL2
SHL1: ORIM RDATA,8H
SHL2: LDA SDATA,0H
BA1 SHL3
JMP SHL4
SHL3: ORIM RDATA,4H
SHL4: LDA SDATA,0H
BA2 SHL5
JMP SHL6
SHL5: ORIM RDATA,2H
SHL6: LDA SDATA,0H
BA3 SHL7
JMP SHL8
SHL7: ORIM RDATA,1H
SHL8: RTNI
;--------------------------------------------
;PORTB
;PB0---通道按键
;PB1---声音变大
;PB2---声音变小
;PB3---按2秒自动通道
;--------------------------------------------
HKEY: ;按键子程序
LDA PORTB,0H ;读B口
STA TMP,0H
ANDIM TMP,0CH
BAZ HKEYID
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
;-------------------------------------
BA0 HKEY1 ;HAVE KEY1
BA1 HKEY2 ;HAVE KEY2
BA2 HKEY3 ;HAVE KEY3
BA3 HKEY4 ;HAVE KEY4
RTNI
HKEY1: ;判断K1键
CALL D50MS ;D100MS ;D50MS
HKEY10: LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA0 HKEY11
RTNI
HKEY11:
LDI CNT1,0H
;--------------------------------------
KEY12:
CALL D100MS ;D100MS ;D50MS
CALL D100MS
SBIM CNT1,1H
BAZ KEY13
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA0 KEY12
ADIM CHNUM,1H ;通道数加1
LDI CHFLAG,0H
RTNI
KEY13: LDA FAUTOCH,0H
BA0 KEY14
LDI FAUTOCH,1H ;设置自动通道搜索
LDI TMP,2H
ORM S123,0H
KEY131: CALL DISP ;显示
CALL D100MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA0 KEY131
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,2H
ORM WAPCTRL,0H
STA DATAH,0H
CALL AWRITE ;写WAPCTRL控制字
RTNI
KEY14: LDI FAUTOCH,0H ;取消自动通道搜索
LDI TMP,0DH
ANDM S123,0H
KEY141: CALL DISP ;显示
CALL D100MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA0 KEY141
;---------------------------------------------------
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,0DH
ANDM WAPCTRL,0H
STA DATAH,0H
CALL AWRITE ;写WAPCTRL控制字
;----------------------------------------------------
RTNI
HKEY2: ;判断K2键
CALL D50MS ;D100MS ;D50MS
HKEY20: LDI TMP,0FH
LDA PORTB,0H ;读B口
EOR TMP,0H
BA1 HKEY21
RTNI
HKEY21:
LDI CNT1,0H
;--------------------------------------
KEY22:
CALL D100MS ;D100MS ;D50MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA1 KEY22
LDA MUFLAG,0H
BA0 KEY221
LDI MUFLAG,1H
LDI TMP,1H
ORM S123,0H
CALL DISP ;显示
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,8H
ORM WAPCTRL,0H ;写WAPCTRL控制字
STA DATAH,0H
CALL AWRITE
RTNI
KEY221: LDI MUFLAG,0H
LDI TMP,0EH
ANDM S123,0H
CALL DISP ;显示
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,07H
ANDM WAPCTRL,0H
STA DATAH,0H
CALL AWRITE ;写WAPCTRL控制字
RTNI
KEY23: RTNI
LDA FPWDN,0H
BA0 KEY24
LDI FPWDN,1H
LDI TMP,4H
ORM S123,0H
KEY231: CALL DISP
CALL D100MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA1 KEY231
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,4H
ORM WAPCTRL,0H
STA DATAH,0H
CALL AWRITE ;写WAPCTRL控制字
RTNI
KEY24: LDI FPWDN,0H
LDI TMP,03H
ANDM S123,0H
KEY241: CALL DISP
CALL D100MS
LDI TMP,0FH
LDA PORTB,0H ;读B口
EOR TMP,0H
BA1 KEY241
;---------------------------------------------------
LDI ADDRESSL,00H ;0CH ;05H ;0FH
LDI ADDRESSH,00H ;03H ;02H
LDI DATAL,0H
LDI TMP,0AH
ANDM WAPCTRL,0H
STA DATAH,0H ;写WAPCTRL控制字
CALL AWRITE
;---------------------
RTNI
;-------------------------------------
HKEY3: ;判断K3键
CALL D50MS ;D100MS ;D50MS
HKEY30: LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA2 HKEY31
RTNI
HKEY31:
BA3 HKEYID
LDI VFLAG,0H
ADIM VOL,1H ;声音大小值加1
LDI TMP,6H
EOR VOL,0H
BAZ HKEY32
JMP KEY33
HKEY32:
LDI VOL,5H ;最大为5
KEY33:
CALL D50MS ;D100MS ;D50MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA3 HKEYID
BA2 KEY33
RTNI
;-------------------------------------
HKEY4: ;判断K4键
CALL D50MS ;D100MS ;D50MS
HKEY40: LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA3 HKEY41
RTNI
HKEY41: BA2 HKEYID
LDI VFLAG,0H
LDA VOL,0H
BAZ KEY42
SBIM VOL,1H ;声音大小值减1
BAZ KEY42
NOP
KEY42:
CALL D50MS ;D100MS ;D50MS
LDI TMP,0FH
LDA PORTB,0H
EOR TMP,0H
BA2 HKEYID
BA3 KEY42
RTNI
HKEYID:
CALL D50MS
LDA PORTB,0H
STA TMP,0H
ANDIM TMP,0CH
BNZ HKEYID2
CALL INITLCD ;初始化LCD
CALL DISPMID ;显示年月份
LDA FLAGID
BA0 HKEYID1
LDI FLAGC,1H
LDI FLAGID,1H
LDI VOL,3H
RTNI
; JMP HKEYID2
HKEYID1:
LDI FLAGID,0H
HKEYID2:
LDI VOL,3H
HKEYID3:
CALL D50MS
LDA PORTB,0H
STA TMP,0H
ANDIM TMP,0CH
BAZ HKEYID3
HKEYID4:
RTNI
;----------------------
AWVOL: ;WRITE VOL
LDI VFLAG,1H
LDA VOL,0H
BAZ AWV1
LDI TMP,1H
EOR VOL,0H
BAZ AWV2
LDI TMP,2H
EOR VOL,0H
BAZ AWV3
LDI TMP,3H
EOR VOL,0H
BAZ AWV4
LDI TMP,4H
EOR VOL,0H
BAZ AWV5
LDI TMP,5H
EOR VOL,0H
BAZ AWV6
RTNI
AWV1: LDI DATAL,06H ;01H设置声音大小参数值
LDI DATAH,0AH
JMP AWVOL2
AWV2: LDI DATAL,0BH ;07H
LDI DATAH,0AH
JMP AWVOL2
AWV3: LDI DATAL,01H ;0DH
LDI DATAH,0BH ;0AH
JMP AWVOL2
AWV4: LDI DATAL,05H ;03H
LDI DATAH,0BH
JMP AWVOL2
AWV5: LDI DATAL,0AH ;09H
LDI DATAH,0BH
JMP AWVOL2
AWV6: LDI DATAL,0FH
LDI DATAH,0BH
AWVOL2:
LDI ADDRESSL,02H
LDI ADDRESSH,00H ;
CALL AWRITE
RTNI
;----------------------
DISPCID: ;显示厂家码
LDI DPL,0H
LDI DPM,0H
LDI DPH,6H
LDI TBR,0H
ADI ID1L,1H ;DATAL,1H
CALL 600H
STA INX,0H
LDI DPL,1H
LDA TBR,0H
STA INX,0H
LDI DPL,2H
LDI TBR,0H
ADI ID1H,1H ;DATAH,1H
CALL 600H
STA INX,0H
LDI DPL,3H
LDA TBR,0H
STA INX,0H
;------------------------------
LDI DPL,4H
LDI TBR,0H
ADI ID2L,1H ;DATAL,1H
CALL 600H
STA INX,0H
LDI DPL,5H
LDA TBR,0H
STA INX,0H
LDI DPL,6H
LDI TBR,0H
ADI ID2H,1H ;DATAH,1H
CALL 600H
STA INX,0H
LDI DPL,7H
LDA TBR,0H
STA INX,0H
CIDEND: NOP
RTNI
;---------------------------
DISPMID: ;显示年月
CALL SETMID
LDI DPL,0H
LDI DPM,0H
LDI DPH,6H
LDI TBR,0H
ADI MONTHL,1H ;显示月
CALL 600H
STA INX,0H
LDI DPL,1H
LDA TBR,0H
STA INX,0H
LDI DPL,2H
LDI TBR,0H
ADI MONTHH,1H
CALL 600H
STA INX,0H
LDI DPL,3H
LDA TBR,0H
STA INX,0H
;----------------------------------
LDI DPL,4H
LDI TBR,0H
ADI YEARL,1H ;显示年
CALL 600H
STA INX,0H
LDI DPL,5H
LDA TBR,0H
STA INX,0H
LDI DPL,6H
LDI TBR,0H
ADI YEARH,1H
CALL 600H
STA INX,0H
LDI DPL,7H
LDA TBR,0H
STA INX,0H
MIDEND: RTNI
;----------------------
RESET: ;初始化
;----------------------
LDI IE,00H ;SET INTERRUPT ENABLE FLAGS
; LDI IRQ,0H ;SET INTERRUPT REQ FLAGS
CALL D50MS
NOP
LDI OXCON,0H
NOP
CALL D50MS
NOP
LDI OXCON,1H
NOP
CALL D50MS
NOP
LDI OXCON,03H
NOP
CALL D50MS
NOP
;------------------------
LDI DPL,00H
LDI DPM,00H
LDI DPH,06H
LDI PACR,1011B ;1011B
LDI PBCR,0000B ;设置I/O口
LDI PORTA,0H
LDI PORTB,0H
LDI CHNUM,00H
LDI CHFLAG,0H
LDI VOL,3H
LDI FLAGID,0H
LDI VFLAG,0H
LDI WAPCTRL,0EH
LDI FAUTOCH,1H
LDI MUFLAG,1H
LDI S123,3H
LDI FPWDN,0H ;1H
LDI ASBT,2H
LDI CONPO,0H
LDI DUTY,01H ;初始化LCD
LDI LCDCON,0H
LDI FLAGR,0H
CALL INITLCD
CALL DISPA ;显示AAI
CALL D1000MS
CALL DISPAI
CALL D1000MS
CALL DISPAAI
CALL D1000MS
CALL D1000MS
CALL SETCID
;-----------------------------------
LDI ADDRESSL,00H
LDI ADDRESSH,00H
LDI DATAL,0H
LDI DATAH,0EH
CALL AWRITE
;-------------------------
NOP
LDI ADDRESSL,03H
LDI ADDRESSH,05H
CALL AWREAD
LDA DATAL,0H
STA CHNUM,0H
NOP
START:
CALL HKEY ;检测按键
LDA FLAGC,0H
BA0 STARTP
JMP STARTP2
STARTP:
CALL DISPCID ;显示厂家码
STARTP1:
CALL D50MS
LDA PORTB,0H
STA TMP,0H
ANDIM TMP,0CH
BAZ STARTP1
LDI FLAGC,0H
STARTP2:
LDA VFLAG,0H
BA0 START0
CALL AWVOL
START0: NOP
CALL DISP ;显示
NOP
LDA CHFLAG,0H
BA0 START1
LDI CHFLAG,1H
;-----------------------------------
LDI ADDRESSL,03H
LDI ADDRESSH,05H
LDA CHNUM,0H
STA DATAL,0H
LDI DATAH,00H
CALL AWRITE ;写通道数
NOP
LDI ADDRESSL,03H
LDI ADDRESSH,00H
LDI DATAL,00H
LDI DATAH,08H
CALL AWRITE
NOP
CALL SETCID
JMP START
;-----------------------------
START1:
LDA FAUTOCH,0H
BA0 START11
JMP START
START11:
LDI ADDRESSL,03H
LDI ADDRESSH,00H
LDI DATAL,00H
LDI DATAH,00H
CALL AWRITE
NOP
CALL D100MS
NOP
NOP
LDI ADDRESSL,03H
LDI ADDRESSH,05H
CALL AWREAD
LDA DATAL,0H
STA CHNUM,0H
LDA CHNUM,0H
;----------------------------
BNZ START12
LDI CHNUM,0FH
JMP START
START12:
SBIM CHNUM,1H
NOP
JMP START
;------------------------
INITLCD: ;初始化LCD
LDI DPL,0H
LDI DPM,0H
LDI DPH,06H
CLEAR:
LDI TMP,0H
STA INX,00H
ADIM DPL,1H
BNC CLEAR
ADIM DPM,1H
SBI DPM,2H
BNZ CLEAR
RTNI
;---------------------------
DISP: ;CH 显示
LDI DPL,6H
LDI DPM,0H
LDI DPH,6H
LDI TMP,09H
STA INX,0H
LDI DPL,7H
LDI TMP,05H
STA INX,0H
;---------------------------
LDI DPL,4H
LDI TMP,6H
STA INX,0H
LDI DPL,5H
LDI TMP,7H
STA INX,0H
NOP
LDI DPL,09H
LDI TMP,4H
ORM VOL2,0H
STA INX,0H
NOP
;----------------------------
LDI TMP,0H
EOR CHNUM,0H
BAZ CH01
;----------------------------
LDI TMP,1H
EOR CHNUM,0H
BAZ CH02
;----------------------------
LDI TMP,2H
EOR CHNUM,0H
BAZ CH03
;----------------------------
LDI TMP,3H
EOR CHNUM,0H
BAZ CH04
;----------------------------
LDI TMP,4H
EOR CHNUM,0H
BAZ CH05
;----------------------------
LDI TMP,5H
EOR CHNUM,0H
BAZ CH06
;----------------------------
LDI TMP,6H
EOR CHNUM,0H
BAZ CH07
;----------------------------
LDI TMP,7H
EOR CHNUM,0H
BAZ CH08
;----------------------------
LDI TMP,8H
EOR CHNUM,0H
BAZ CH09
;----------------------------
LDI TMP,9H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -