📄 safeverfy.lst
字号:
1 1: ;*****************************************************
2 2: ;Company :
3 3: ;File Name : SafeVerfy.asm
4 4: ;Author :
5 5: ;Create Data : 2006-04-24
6 6: ;Last Modified : 2006-04-24
7 7: ;Description :
8 8: ;Version : 1.0
9 9: ;*****************************************************
10
11
12 12: //市电AD输入判断 PA.0
13 13: VAC_AD_COMPL EQU 0BH ;0.9V
14 14: VAC_AD_COMPH EQU 04H ;0.9V
15 15: VAC_AD_IN EQU 01H
16 16: VAC_AD_PCON EQU 18H
17 17: VAC_AD_PORT EQU 08H
18
19 19: //电池AD输入判断 PA.1
20 20: VBAT_AD_COMPL EQU 08H ;2.4V 0A
21 21: VBAT_AD_COMPH EQU 07H ;2.4V
22 22: VBAT_AD_IN EQU 02H
23 23: VBAT_AD_PCON EQU 18H
24 24: VBAT_AD_PORT EQU 08H
25
26 26: //电池充电控制输出 PB.0
27 27: CHG_OUT EQU 01H
28 28: CHG_OUT_PCON EQU 19H
29 29: CHG_OUT_PORT EQU 09H
30
31 31: // SPI SCK时钟线控制输入 PC.3
32 32: PSCK EQU 08H
33 33: PSCK_PCON EQU 1AH
34 34: PSCK_PORT EQU 0AH
35
36 36: // SPI PSDO数据线控制输入 PE.1
37 37: PSDO EQU 02H
38 38: PSDO_PCON EQU 1CH
39 39: PSDO_PORT EQU 0CH
40
41 41: // SPI PSDI数据线控制输入 PE.2
42 42: PSDI EQU 04H
43 43: PSDI_PCON EQU 1DH
44 44: PSDI_PORT EQU 0CH
45
46
47
48
49 49: //5个通用寄存器
50 50: GEN_REG1 EQU 30H
51 51: GEN_REG2 EQU 31H
52 52: GEN_REG3 EQU 32H
53 53: GEN_REG4 EQU 33H
54 54: GEN_REG5 EQU 34H
55
56 56: //市电输入AD缓存寄存器
57 57: VAC_AD_TEMPL EQU 36H
58 58: VAC_AD_TEMPH EQU 37H
59 59: //电池输入AD缓存寄存器
60 60: VBAT_AD_TEMPL EQU 38H
61 61: VBAT_AD_TEMPH EQU 39H
62 62: // 状态寄存器
63 63: STATUS_REG EQU 3AH
64
65 65: READ_DATA_VALUE_TEMP EQU 3BH //读取数值缓存区
66 66: WRITE_REG_TEMP EQU 3CH
67
68 68: READ_DATA_COUNT EQU 40H //读取数值位次数
69 69: SPI_BYTE_ONE_H EQU 41H //读取数值高
70 70: SPI_BYTE_ONE_L EQU 42H //读取数值低
71 71: SPI_BYTE_TWO_H EQU 43H
72 72: SPI_BYTE_TWO_L EQU 44H
73 73: SPI_BYTE_THREE_H EQU 45H
74 74: SPI_BYTE_THREE_L EQU 46H
75
76 76: WRITE_BYTE_ONE_H EQU 47H
77 77: WRITE_BYTE_ONE_L EQU 48H
78 78: WRITE_BYTE_TWO_H EQU 49H
79 79: WRITE_BYTE_TWO_L EQU 4AH
80 80: WRITE_BYTE_THREE_H EQU 4BH
81 81: WRITE_BYTE_THREE_L EQU 4CH
82
83
84
85
86
87 87: ORG 0000H
88 88:
89 0x0000 0xe005 89: JMP START ;START PROGRAM
90 0x0001 0xd400 90: RTNI ;AD 中断返回
91 0x0002 0xd400 91: RTNI
92 92: //JMP SCK_SERVER ;T0 中断
93 0x0003 0xd400 93: RTNI ;T1 中断
94 0x0004 0xd400 94: RTNI ;EX 中断
95 95:
96
97
98
99 99: ;**** START PROGRAM ***
100 100: START:
101 0x0005 0xc05e 101: CALL INITMCU ;初始化单片机寄存器,中断等
102 0x0006 0xc00c 102: CALL INITREG ;初始化寄存器
103 103: ;********** 主程序 *****************
104 104: MAIN:
105 0x0007 0xc015 105: CALL AD_INPUT
106 0x0008 0xc032 106: CALL CHARGE_SET
107 0x0009 0xc051 107: CALL DELAY
108 0x000a 0xc051 108: CALL DELAY
109 109:
110
111 111:
112 0x000b 0xe007 112: JMP MAIN
113
114 114: /////////////////////////////////////////////////
115 115: // 初始化寄存器
116 116: INITREG:
117 0x000c 0x7830 117: LDI GEN_REG1,0H
118 0x000d 0x7831 118: LDI GEN_REG2,0H
119 0x000e 0x7832 119: LDI GEN_REG3,0H
120 0x000f 0x7836 120: LDI VAC_AD_TEMPL,0H
121 0x0010 0x7837 121: LDI VAC_AD_TEMPH,0H
122 0x0011 0x7838 122: LDI VBAT_AD_TEMPL,0H
123 0x0012 0x7839 123: LDI VBAT_AD_TEMPH,0H
124 0x0013 0x783a 124: LDI STATUS_REG,0H
125 125: //LDI T0CON,0010B ;定时器时钟源为外部时钟,
126 0x0014 0xd400 126: RTNI
127 127: /////////////////////////////////////////////////
128 128:
129 129: /////////////////////////////////////////////////////////////////
130 130: //检测市电 电池电压 AD转换输入
131 131: AD_INPUT:
132 132: // AD 市电 输入
133 0x0015 0x7c14 133: LDI ADCH,1000B
134 0x0016 0xffff 134: NOP
135 0x0017 0x7c97 135: LDI ADCON,1001B
136 0x0018 0xffff 136: NOP
137 137: WAIT_LOOP:
138 0x0019 0xffff 138: NOP
139 0x001a 0x3817 139: LDA ADCON
140 0x001b 0xb819 140: BA3 WAIT_LOOP
141 0x001c 0xffff 141: NOP
142 0x001d 0xffff 142: NOP
143 0x001e 0x3816 143: LDA ADRESH ;A/D 转换完成,存储转换结果。
144 0x001f 0x3c37 144: STA VAC_AD_TEMPH
145 0x0020 0x3815 145: LDA ADRESL
146 0x0021 0x3c36 146: STA VAC_AD_TEMPL
147 0x0022 0xffff 147: NOP
148 148: // AD 电池 输入
149 0x0023 0x7c94 149: LDI ADCH,1001B
150 0x0024 0xffff 150: NOP
151 0x0025 0x7c97 151: LDI ADCON,1001B
152 0x0026 0xffff 152: NOP
153 153: WAIT_LOOP2:
154 0x0027 0xffff 154: NOP
155 0x0028 0x3817 155: LDA ADCON
156 0x0029 0xb827 156: BA3 WAIT_LOOP2
157 0x002a 0xffff 157: NOP
158 0x002b 0xffff 158: NOP
159 0x002c 0x3816 159: LDA ADRESH ;A/D 转换完成,存储转换结果。
160 0x002d 0x3c39 160: STA VBAT_AD_TEMPH
161 0x002e 0x3815 161: LDA ADRESL
162 0x002f 0x3c38 162: STA VBAT_AD_TEMPL
163 0x0030 0xffff 163: NOP
164 0x0031 0xd400 164: RTNI
165 165: ////////////////////////////////////////////////////////////
166
167
168 168: // 充电处理
169 169: CHARGE_SET:
170 170: // 检测市电电压
171 0x0032 0x5237 171: SBI VAC_AD_TEMPH,VAC_AD_COMPH
172 0x0033 0x9839 172: BC SET_VAC_FLAG ;存在市电
173 0x0034 0x9036 173: BAZ COMP_VACL
174 0x0035 0xe03c 174: JMP CLR_VAC_FLAG ;不存在市电情况处理
175 175:
176 176: COMP_VACL:
177 0x0036 0x55b6 177: SBI VAC_AD_TEMPL,VAC_AD_COMPL
178 0x0037 0x9839 178: BC SET_VAC_FLAG ;存在市电
179 0x0038 0xe03c 179: JMP CLR_VAC_FLAG ;不存在市电情况处理
180 180:
181 181: SET_VAC_FLAG: ;存在市电
182 0x0039 0x68ba 182: ORIM STATUS_REG,01H ;存在市电则置市电标志位
183 0x003a 0x690c 183: ORIM PSDO_PORT,02H ;若存在市电则将该管脚置高
184 0x003b 0xe03f 184: JMP VBAT_CHECK ;检测电池电压
185 185:
186 186: CLR_VAC_FLAG: ;不存在市电情况处理
187 0x003c 0x773a 187: ANDIM STATUS_REG,0EH ;不存在市电则清除市电标志位
188 0x003d 0x768c 188: ANDIM PSDO_PORT,0DH ;若不存在市电则将该管脚置低
189 0x003e 0xe03f 189: JMP VBAT_CHECK ;检测电池电压
190 190:
191 191: //检测电池电压
192 192: VBAT_CHECK:
193 0x003f 0x53b9 193: SBI VBAT_AD_TEMPH, VBAT_AD_COMPH ;VBAT_AD_COMPH
194 0x0040 0x9846 194: BC SET_VBAT_FLAG ;电池充满
195 0x0041 0x9043 195: BAZ COMP_VBATL ;比较电池电压低位
196 0x0042 0xe048 196: JMP CLR_VBAT_FLAG ;电池电量不够
197 197:
198 198: COMP_VBATL: ;比较电池电压低位
199 0x0043 0x5438 199: SBI VBAT_AD_TEMPL,VBAT_AD_COMPL
200 0x0044 0x9846 200: BC SET_VBAT_FLAG ;电池充满
201 0x0045 0xe048 201: JMP CLR_VBAT_FLAG ;电池电量不够
202 202:
203 203: SET_VBAT_FLAG: ;电池充满
204 0x0046 0x693a 204: ORIM STATUS_REG,02H ;存在市电则置市电标志位
205 0x0047 0xe04a 205: JMP CHARGE_CTRL ;检测电池电压
206 206:
207 207: CLR_VBAT_FLAG: ;电池电量不够
208 0x0048 0x76ba 208: ANDIM STATUS_REG,0DH ;不存在市电则清除市电标志位
209 0x0049 0xe04a 209: JMP CHARGE_CTRL ;检测电池电压
210 210:
211 211: CHARGE_CTRL:
212 0x004a 0x78b0 212: LDI GEN_REG1,01H
213 0x004b 0x203a 213: EOR STATUS_REG,0H
214 0x004c 0x904f 214: BAZ $+3
215 0x004d 0x7809 215: LDI CHG_OUT_PORT,0H ;关闭充电
216 0x004e 0xe050 216: JMP $+2
217 0x004f 0x7f89 217: LDI CHG_OUT_PORT,0FH ;充电
218 0x0050 0xd400 218: RTNI
219 219:
220 220:
221 221:
222
223 223: ;=============================================================
224 224: ;延时子程序(5ms)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -