📄 ok.dt
字号:
;FOR LCM 1621
;R1--传递指令码/显示码
;R0--传递地址
;单LCD屏+MPU+双PLL麦克风程序
;芯片为EM78P447SBP
;振荡模式为4MHz晶振
;看门狗关,指令周期为2个CLOCK
;==============寄存器的定义========================
R0 == 0X00
TCC == 0X01
PC == 0X02
SREG == 0X03
C==0
DC==1
Z==2
P==3
T==4
PS0==5
PS1==6
CMPOUT==7
R4 == 0X04
P5 == 0X05
K1 == 0
K2 == 1
K3 == 2
K4 == 3
K5 == 4
DAT== 5
_WR== 6
CS == 7
P6 == 0X06
AF1==0
AB1==1
ANT1==2
RF1==3
AB2==4 ;无上拉
AF2==5
ANT2==6
RF2==7
IOCB == 0XB ;下拉控制
IOCC == 0XC ;漏极开路控制
IOCD == 0XD ;上拉控制
R_F == 0XF ;中断状态寄存器
IOCF== 0XF ;IOW中断屏蔽寄存器
;ADC Contro Registers
ADDATA == 0XA ;MOV
ADCONR == 0X9 ;MOV
ADRUN==4
ADPD==3
ADIS2==2 ;模拟输入选择
ADIS1==1
ADIS0==0
ADCONC == 0XA ;IOW
VREFS==7 ;参考电压,0为工作电压
CE==6
COE==5
IMS2==4 ;模拟和数据I/O口选择
IMS1==3
IMS0==2
CKR1==1 ;ADC时钟分频数
CKR0==0
GCON == 0X9 ;IOW
OP2E==7 ;增溢放大器2,==0时OP2关闭
OP1E==6
G22==5 ;增溢选择
G21==4
G20==3
G12==2
G11==1
G10==0
;============用户寄存器========================================
TMP ==0XB
FG ==0XC ;低两位
; DATA ==0XD
; ==0XE ;低两位
S1 == 0X10 ;通用寄存器
S2 == 0X11
S3 == 0X12
CNT0 == 0X14
CNT1 == 0X15
ADRL == 0X16
ADRH == 0X17
DATA == 0X18
ADDR == 0X19
TM1 == 0X1A
TM2 == 0X1B
; == 0X1C
; == 0X1D
; == 0X1E
; == 0X1F
;==========================STAR0===============================
ORG 0
JMP INITIAL
ORG 1 ;软件中断地址
RETI
ORG 8 ;硬件中断地址
RETI
ORG 10
;---------------------------------------------
CODEB: ;七段LED数据,高低字节分别对应LED的两个部分
ADD PC, A
RETL @0XEB ;0
RETL @0X0A ;1
RETL @0XAD ;2
RETL @0X8F ;3
RETL @0X4E ;4
RETL @0XC7 ;5
RETL @0XE7 ;6
RETL @0X8A ;7
RETL @0XEF ;8
RETL @0XCF ;9
;----------------------------------------------
INITB:
ADD PC,A ;高------低 地址
RETL @0X0E ;1A,1F,1E,R3 ;0
RETL @0X0B ;1B,1G,1C,1D ;1
RETL @0X0E ;2A,2F,2E,R2 ;2
RETL @0X0B ;2B,2G,2C,2D ;3
RETL @0X0E ;3A,3F,3E,R1 ;4
RETL @0X0B ;3B,3G,3C,3D ;5
RETL @0X0F ;4A,4F,4E,P1 ;6
RETL @0X0B ;4B,4G,4C,4D ;7
RETL @0X08 ;I,U7,U6,U5 ;8
RETL @0X00 ;U4,U3,U2,U1 ;9
RETL @0X00 ;S4,S3,S2,S1 ;10
RETL @0X00 ;\,S7,S6,S5 ;11
RETL @0X0E ;5A,5F,5E,R10 ;12
RETL @0X0B ;5B,5G,5C,5D ;13
RETL @0X0E ;6A,6F,6E,R9 ;14
RETL @0X0B ;6B,6G,6C,6D ;15
RETL @0X0E ;7A,7F,7E,R8 ;16
RETL @0X0B ;7B,7G,7C,7D ;17
RETL @0X0F ;8A,8F,8E,P2 ;18
RETL @0X0B ;8B,8G,8C,8D ;19
RETL @0X08 ;II,R13,R12,R1 ;20
RETL @0X08 ;R14,T7,T6,T5 ;21
RETL @0X00 ;T4,T3,T2,T1 ;22
RETL @0X00 ;V4,V3,V2,V1 ;23
RETL @0X01 ;V5,V6,V7,R16 ;24
RETL @0X01 ;R4,R5,R6,R7 ;25
;----------------------------------------------
FREQI:
ADD PC,A
RETL @0X47 ;0 ;第三位数=0,25,50,75无显示
RETL @0X90 ;第三位数=1,25显示,50,75无显示
RETL @0X00 ;第三位数=2,50显示,25,75无显示
RETL @0X49 ;0 ;第三位数=3,75显示,25,50无显示
RETL @0X44
RETL @0X00
RETL @0X47 ;1
RETL @0X98
RETL @0X00
RETL @0X49 ;1
RETL @0X50
RETL @0X00
RETL @0X48 ;2
RETL @0X08
RETL @0X00
RETL @0X49 ;2
RETL @0X67
RETL @0X00
RETL @0X48 ;3
RETL @0X20
RETL @0X00
RETL @0X49 ;3
RETL @0X78
RETL @0X00
RETL @0X48 ;4
RETL @0X34
RETL @0X00
RETL @0X49 ;4
RETL @0X97
RETL @0X00
RETL @0X48 ;5
RETL @0X54
RETL @0X00
RETL @0X50 ;5
RETL @0X10
RETL @0X00
RETL @0X49 ;6
RETL @0X34
RETL @0X00
RETL @0X50 ;6
RETL @0X90
RETL @0X00
RETL @0X49 ;7
RETL @0X14
RETL @0X00
RETL @0X50 ;7
RETL @0X77
RETL @0X00
RETL @0X49 ;8
RETL @0X00
RETL @0X00
RETL @0X50 ;8
RETL @0X58
RETL @0X00
RETL @0X48 ;9
RETL @0X88
RETL @0X00
RETL @0X50 ;9
RETL @0X47
RETL @0X00
RETL @0X48 ;10
RETL @0X78
RETL @0X00
RETL @0X50 ;10
RETL @0X30
RETL @0X00
RETL @0X48 ;11
RETL @0X70
RETL @0X00
RETL @0X50 ;11
RETL @0X24
RETL @0X00
RETL @0X79 ;12
RETL @0X53
RETL @0X00
RETL @0X79 ;12
RETL @0X98
RETL @0X00
RETL @0X79 ;13
RETL @0X58
RETL @0X00
RETL @0X79 ;13
RETL @0X88
RETL @0X00
RETL @0X79 ;14
RETL @0X64
RETL @0X00
RETL @0X80 ;14
RETL @0X10
RETL @0X00
RETL @0X79 ;15
RETL @0X71
RETL @0X00
RETL @0X80 ;15
RETL @0X30
RETL @0X00
RETL @0X79 ;16
RETL @0X41
RETL @0X00
RETL @0X80 ;16
RETL @0X26
RETL @0X00
RETL @0X70 ;17
RETL @0X22
RETL @0X00
RETL @0X71 ;17
RETL @0X70
RETL @0X02
RETL @0X70 ;18
RETL @0X42
RETL @0X00
RETL @0X72 ;18
RETL @0X08
RETL @0X00
RETL @0X70 ;19
RETL @0X72
RETL @0X00
RETL @0X72 ;19
RETL @0X20
RETL @0X01
RETL @0X70 ;20
RETL @0X94
RETL @0X01
RETL @0X72 ;20
RETL @0X42
RETL @0X02
RETL @0X70 ;21
RETL @0X37
RETL @0X02
RETL @0X71 ;21
RETL @0X85
RETL @0X03
RETL @0X70 ;22
RETL @0X59
RETL @0X03
RETL @0X71 ;22
RETL @0X43
RETL @0X01
RETL @0X70 ;23
RETL @0X88
RETL @0X02
RETL @0X72 ;23
RETL @0X38
RETL @0X00
RETL @0X70 ;24
RETL @0X56
RETL @0X02
RETL @0X72 ;24
RETL @0X06
RETL @0X00
RETL @0X70 ;25
RETL @0X86
RETL @0X02
RETL @0X72 ;25
RETL @0X22
RETL @0X02
RETL @0X71 ;26
RETL @0X08
RETL @0X03
RETL @0X72 ;26
RETL @0X34
RETL @0X03
RETL @0X20 ;27
RETL @0X23
RETL @0X00
RETL @0X22 ;27
RETL @0X20
RETL @0X00
RETL @0X20 ;28
RETL @0X36
RETL @0X00
RETL @0X22 ;28
RETL @0X40
RETL @0X00
RETL @0X20 ;29
RETL @0X44
RETL @0X00
RETL @0X22 ;29
RETL @0X24
RETL @0X00
RETL @0X20 ;30
RETL @0X18
RETL @0X00
RETL @0X22 ;30
RETL @0X52
RETL @0X00
RETL @0X20 ;31
RETL @0X23
RETL @0X00
RETL @0X22 ;31
RETL @0X62
RETL @0X00
;----------------------------------------------
;========================HT1621================
CLRALL:
CLR ADDR
CLR DATA
LPL:
CALL INDAT
INC ADDR
MOV A,@0X1A
XOR A,ADDR
JBS SREG,Z
JMP LPL
RET
;===============================================
DISALL:
CLR ADDR
MOV A,@0X0F
MOV DATA,A
LPH:
CALL INDAT
INC ADDR
MOV A,@0X1A
XOR A,ADDR
JBS SREG,Z
JMP LPH
RET
;===============================================
INCOM:
BC P5,CS
NOP
MOV A,@0X03
MOV S1,A
MOV A,@0X80
MOV TMP,A
SPT1:
NOP
NOP
RLC TMP
JBS SREG,C
JMP ST0
BS P5,DAT
JMP SWT0
ST0: BC P5,DAT
SWT0: NOP
BC P5,_WR
NOP
NOP
NOP
BS P5,_WR
NOP
NOP
DJZ S1
JMP SPT1
MOV A,@0X09
MOV S1,A
SPT2: RLC DATA
JBS SREG,C
JMP ST1
BS P5,DAT
JMP SWT1
ST1: BC P5,DAT
SWT1: NOP
BC P5,_WR
NOP
BS P5,_WR
NOP
DJZ S1
JMP SPT2
BS P5,CS
RET
;===============================================
INDAT:
BC P5,CS
NOP
MOV A,@0X03
MOV S1,A
MOV A,@0XA0
MOV TMP,A
SPP1:
RLC TMP
JBS SREG,C
JMP SB0
BS P5,DAT
JMP SWR0
SB0: BC P5,DAT
SWR0: CALL DELAY
BC P5,_WR
CALL DELAY
BS P5,_WR
CALL DELAY
DJZ S1
JMP SPP1
MOV A,ADDR
MOV TMP,A
RLC TMP ;ADDRESS(FROM 0-31)
RLC TMP
MOV A,@0X06
MOV S1,A
SPP2:
RLC TMP
JBS SREG,C
JMP SB1
BS P5,DAT
JMP SWR1
SB1: BC P5,DAT
SWR1: CALL DELAY
BC P5,_WR
CALL DELAY
BS P5,_WR
CALL DELAY
DJZ S1
JMP SPP2
MOV A,DATA
MOV TMP,A
RLC TMP
RLC TMP
RLC TMP
RLC TMP
MOV A,@0X04
MOV S1,A
SPP3:
RLC TMP
JBS SREG,C
JMP SB2
BS P5,DAT
JMP SWR2
SB2: BC P5,DAT
SWR2: CALL DELAY
BC P5,_WR
CALL DELAY
BS P5,_WR
CALL DELAY
DJZ S1
JMP SPP3
NOP
BS P5,CS
RET
;==============================================================
DELAY5MS: ;延时5mS
MOV A, @10
MOV CNT0, A
P0_DLY:
NOP
MOV A, @199
MOV CNT1, A
P0_LP:
NOP
NOP
NOP
DJZ CNT1 ;5 X 199 (LP_CNT1 = 199) = 995
JMP P0_LP ;5 + 995(P0_LP所有的指令) = 1000
DJZ CNT0 ;1000 X 10 (LP_CNT0 = 2) = 10000
JMP P0_DLY ;10000 + 1 (CALL)+ 1(RET) + 2(2MOV) + 1(CALL) = 10005
RET ;10005 * 0.5 = 5.0025(mS)
;===============================================================
DELAY6US: ;延时6uS
MOV A,@10
MOV CNT0,A
DELAY_LOOP:
DJZ CNT0
JMP DELAY_LOOP
RET
;===============================================================
DELAY: ;延时6uS
MOV A,@10
MOV CNT0,A
DEL:
DJZ CNT0
JMP DEL
RET
;---------------------------------------------------------
INITIAL:
MOV A,@0B10111011 ;ANT1,ANT2内部接下接
IOW IOCB
MOV A,@0B11111111
IOW IOCC
MOV A,@0B11111111 ;AB1,AB2内部不接上拉,要外接
IOW IOCD
MOV A,@0B00011111
IOW P5
MOV A,@0B11111111
IOW P6
DISI
INI1621:
MOV A,@0X01 ;SYS EN
MOV DATA,A
CALL INCOM
MOV A,@0X18 ;RC 256K
MOV DATA,A
CALL INCOM
MOV A,@0X03
MOV DATA,A
CALL INCOM
MOV A,@0X29 ;BIAS 1/3(USE COM0-COM3)
MOV DATA,A
CALL INCOM
CALL DISALL ;开显示
W1S: MOV A,@0XC8 ;延时1S
MOV S1,A
WW: CALL DELAY5MS
DJZ S1
JMP WW
NOP
CALL CLRALL ;关显示
MOV A,@0X20 ;显示数据起始位置
MOV R4,A
MOV A,@0X00
MOV ADDR,A
INILCD:
NOP
NOP
NOP
MOV A,ADDR
CALL INITB
MOV R0,A
MOV DATA,A
CALL INDAT
INC R4
INC ADDR
MOV A,ADDR
XOR A,@0X1A
JBS SREG,Z
JMP INILCD
WHILE:
MOV A,P5 ;检测K1-K5(0-31)
AND A,@0X1F
MOV TM1,A
XOR A,TM2
JBC SREG,Z
JMP CH_ANT1
MOV A,TM1
MOV TM2,A
BC SREG,C
RLC TM1
RLC TM1
ADD TM1,A
ADD TM1,A ;开关量乘以6
MOV A,TM1
CALL FREQI
MOV S2,A
SWAPA S2
AND A,@0X0F
CALL CODEB
MOV S3,A
SWAPA S3
AND A,@0X0F
MOV 0X20,A
MOV DATA,A
MOV A,@0X0 ;LED1
MOV ADDR,A
CALL INDAT
MOV A,S3
AND A,@0X0F
MOV DATA,A
INC ADDR
CALL INDAT
MOV A,S2
AND A,@0X0F
CALL CODEB
MOV S3,A
SWAPA S3
AND A,@0X0F
MOV 0X22,A
MOV DATA,A
INC ADDR ;LED2
CALL INDAT
MOV A,S3
AND A,@0X0F
MOV DATA,A
INC ADDR
CALL INDAT
;-------------------------
INC TM1
MOV A,TM1
CALL FREQI
MOV S2,A
SWAPA S2
AND A,@0X0F
CALL CODEB
MOV S3,A
SWAPA S3
AND A,@0X0F
MOV 0X24,A
MOV DATA,A
INC ADDR ;LED3
CALL INDAT
MOV A,S3
AND A,@0X0F
MOV DATA,A
INC ADDR
CALL INDAT
MOV A,S2
AND A,@0X0F
CALL CODEB
MOV S3,A
SWAPA S3
AND A,@0X0F
OR A,@0X01
MOV DATA,A
INC ADDR ;LED4
CALL INDAT
MOV A,S3
AND A,@0X0F
MOV DATA,A
INC ADDR
CALL INDAT
;-----------------
INC TM1
MOV A,TM1
CALL FREQI
AND A,@0X0F
MOV S3,A
JBS SREG,Z
JMP S25
; MOV A,0X24
; AND A,@0X0E ;R1=0
; MOV 0X24,A
; MOV A,0X22
; AND A,@0X0E ;R2=0
; MOV 0X22,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -