?? 洗衣機.lst
字號:
(0179) else //if(RW==1)
(0180) {
(0181) S_ID |= 0X04;
19F 01C5 MOVW R24,R10
1A0 6084 ORI R24,4
1A1 015C MOVW R10,R24
(0182) }
(0183) if(RS == 0)
1A2 20EE TST R14
1A3 F421 BNE 0x01A8
(0184) {
(0185) S_ID &=~ 0x02;
1A4 01C5 MOVW R24,R10
1A5 7F8D ANDI R24,0xFD
1A6 015C MOVW R10,R24
(0186) }
1A7 C003 RJMP 0x01AB
(0187) else //if(RS==1)
(0188) {
(0189) S_ID |= 0X02;
1A8 01C5 MOVW R24,R10
1A9 6082 ORI R24,2
1AA 015C MOVW R10,R24
(0190) }
(0191) H_data = W_data;
1AB 2D6C MOV R22,R12
1AC 2777 CLR R23
(0192) H_data &= 0xf0; //屏蔽低4位的數據
1AD 7F60 ANDI R22,0xF0
1AE 7070 ANDI R23,0
(0193) L_data = W_data; //xxxx0000格式
1AF 2D4C MOV R20,R12
1B0 2755 CLR R21
(0194) L_data &= 0x0f; //屏蔽高4位的數據
1B1 704F ANDI R20,0xF
1B2 7050 ANDI R21,0
(0195) L_data <<= 4; //xxxx0000格式
1B3 0F44 LSL R20
1B4 1F55 ROL R21
1B5 0F44 LSL R20
1B6 1F55 ROL R21
1B7 0F44 LSL R20
1B8 1F55 ROL R21
1B9 0F44 LSL R20
1BA 1F55 ROL R21
(0196) Set_CS();
1BB 9AD0 SBI 0x1A,0
1BC 9AD8 SBI 0x1B,0
(0197) Write_8bits(S_ID); //發送S_ID
1BD 0185 MOVW R16,R10
1BE D008 RCALL _Write_8bits
(0198) Write_8bits(H_data); //發送H_data
1BF 018B MOVW R16,R22
1C0 D006 RCALL _Write_8bits
(0199) Write_8bits(L_data); //發送L_data
1C1 018A MOVW R16,R20
1C2 D004 RCALL _Write_8bits
(0200) Clr_CS();
1C3 9AD0 SBI 0x1A,0
1C4 98D8 CBI 0x1B,0
1C5 940C 0AC7 JMP pop_xgsetF0FC
_Write_8bits:
Temp_data --> R12
i --> R20
W_bits --> R10
1C7 940E 0AFF CALL push_xgset303C
1C9 0158 MOVW R10,R16
(0201) }
(0202) /********************************************************************
(0203) 函 數 名:Write_8bits
(0204) 入口參數:W_bits
(0205) 出口參數:無
(0206) 建立日期:2007年3月3日
(0207) 修改日期:
(0208) 函數作用:負責串行輸出8個bit位
(0209) 說 明:
(0210) ********************************************************************/
(0211) void Write_8bits(uint W_bits)
(0212) {
(0213) uint i,Temp_data;
(0214) for(i=0; i<8; i++)
1CA 2744 CLR R20
1CB 2755 CLR R21
1CC C019 RJMP 0x01E6
(0215) {
(0216) Temp_data = W_bits;
1CD 0165 MOVW R12,R10
(0217) Temp_data <<= i;
1CE 019A MOVW R18,R20
1CF 0186 MOVW R16,R12
1D0 940E 0B1F CALL lsl16
1D2 0168 MOVW R12,R16
(0218) if((Temp_data&0x80)==0)
1D3 FD07 SBRC R16,7
1D4 C003 RJMP 0x01D8
(0219) {
(0220) Clr_SID();
1D5 9AD1 SBI 0x1A,1
1D6 98D9 CBI 0x1B,1
(0221) }
1D7 C002 RJMP 0x01DA
(0222) else
(0223) {
(0224) Set_SID();
1D8 9AD1 SBI 0x1A,1
1D9 9AD9 SBI 0x1B,1
(0225) }
(0226) nop();
1DA 0000 NOP
(0227) Set_SCLK();
1DB 9AD2 SBI 0x1A,2
1DC 9ADA SBI 0x1B,2
(0228) nop();
1DD 0000 NOP
(0229) nop();
1DE 0000 NOP
(0230) Clr_SCLK();
1DF 9AD2 SBI 0x1A,2
1E0 98DA CBI 0x1B,2
(0231) nop();
1E1 0000 NOP
(0232) Clr_SID();
1E2 9AD1 SBI 0x1A,1
1E3 98D9 CBI 0x1B,1
1E4 5F4F SUBI R20,0xFF
1E5 4F5F SBCI R21,0xFF
1E6 3048 CPI R20,0x8
1E7 E0E0 LDI R30,0
1E8 075E CPC R21,R30
1E9 F318 BCS 0x01CD
1EA 940C 0B06 JMP pop_xgset303C
_bell:
fff --> R16
1EC 934A ST R20,-Y
1ED 935A ST R21,-Y
FILE: F:\AVR洗衣機\洗衣機主機\Sounds_and_Display.h
(0001) void bell(uchar fff)
(0002) {
(0003) switch (fff)
1EE 2F40 MOV R20,R16
1EF 2755 CLR R21
1F0 3040 CPI R20,0
1F1 0745 CPC R20,R21
1F2 F029 BEQ 0x01F8
1F3 3041 CPI R20,1
1F4 E0E0 LDI R30,0
1F5 075E CPC R21,R30
1F6 F041 BEQ 0x01FF
1F7 C00D RJMP 0x0205
(0004) {
(0005) case 0:DDR_PA3=1;_PA3=0;break;
1F8 B38A IN R24,0x1A
1F9 6088 ORI R24,0x8
1FA BB8A OUT 0x1A,R24
1FB B38B IN R24,0x1B
1FC 7F87 ANDI R24,0xF7
1FD BB8B OUT 0x1B,R24
1FE C006 RJMP 0x0205
(0006) case 1:DDR_PA3=1;_PA3=1;break;
1FF B38A IN R24,0x1A
200 6088 ORI R24,0x8
201 BB8A OUT 0x1A,R24
202 B38B IN R24,0x1B
203 6088 ORI R24,0x8
204 BB8B OUT 0x1B,R24
(0007) default:break;
205 9159 LD R21,Y+
206 9149 LD R20,Y+
207 9508 RET
_Delay:
i --> R20
ms --> R16
208 934A ST R20,-Y
209 935A ST R21,-Y
FILE: F:\AVR洗衣機\洗衣機主機\key.h
(0001) /********************************************************************
(0002) 函 數 名:Delay
(0003) 入口參數:ms
(0004) 出口參數:無
(0005) 建立日期:2007年3月3日
(0006) 修改日期:
(0007) 函數作用:毫秒級的延時程序,當晶振為12Mhz時,xtal=12;
(0008) 說 明:
(0009) ********************************************************************/
(0010) #define xtal 8
(0011) void Delay(uint ms)
(0012) {
20A C00A RJMP 0x0215
(0013) uint i;
(0014) while(ms--)
(0015) {
(0016) for(i=1;i<(uint)(xtal*143-2);i++)
20B E041 LDI R20,1
20C E050 LDI R21,0
20D C002 RJMP 0x0210
20E 5F4F SUBI R20,0xFF
20F 4F5F SBCI R21,0xFF
210 E786 LDI R24,0x76
211 E094 LDI R25,4
212 1748 CP R20,R24
213 0759 CPC R21,R25
214 F3C8 BCS 0x020E
215 0118 MOVW R2,R16
216 5001 SUBI R16,1
217 4010 SBCI R17,0
218 2022 TST R2
219 F789 BNE 0x020B
21A 2033 TST R3
21B F779 BNE 0x020B
21C 9159 LD R21,Y+
21D 9149 LD R20,Y+
21E 9508 RET
_DELAY:
i --> R20
ms --> R16
21F 934A ST R20,-Y
220 935A ST R21,-Y
(0017) ;
(0018) }
(0019) }
(0020)
(0021) void DELAY(uint ms)
(0022) {
221 C00A RJMP 0x022C
(0023) uint i;
(0024) while(ms--)
(0025) {
(0026) for(i=1;i<(uint)(xtal*143-2);i++)
222 E041 LDI R20,1
223 E050 LDI R21,0
224 C002 RJMP 0x0227
225 5F4F SUBI R20,0xFF
226 4F5F SBCI R21,0xFF
227 E786 LDI R24,0x76
228 E094 LDI R25,4
229 1748 CP R20,R24
22A 0759 CPC R21,R25
22B F3C8 BCS 0x0225
22C 0118 MOVW R2,R16
22D 5001 SUBI R16,1
22E 4010 SBCI R17,0
22F 2022 TST R2
230 F789 BNE 0x0222
231 2033 TST R3
232 F779 BNE 0x0222
233 9159 LD R21,Y+
234 9149 LD R20,Y+
235 9508 RET
(0027) ;
(0028) }
(0029) }
(0030)
(0031)
(0032) void key_scan()
(0033) {
(0034) DDR_PA4=1;
_key_scan:
236 B38A IN R24,0x1A
237 6180 ORI R24,0x10
238 BB8A OUT 0x1A,R24
(0035) DDR_PA7=1;
239 B38A IN R24,0x1A
23A 6880 ORI R24,0x80
23B BB8A OUT 0x1A,R24
(0036) _PA4=1;
23C B38B IN R24,0x1B
23D 6180 ORI R24,0x10
23E BB8B OUT 0x1B,R24
(0037) _PA7=1;
23F B38B IN R24,0x1B
240 6880 ORI R24,0x80
241 BB8B OUT 0x1B,R24
(0038) DDR_PA4=0;
242 B38A IN R24,0x1A
243 7E8F ANDI R24,0xEF
244 BB8A OUT 0x1A,R24
(0039) DDR_PA7=0;
245 B38A IN R24,0x1A
246 778F ANDI R24,0x7F
247 BB8A OUT 0x1A,R24
(0040)
(0041)
(0042) if(READ_PA4==0)
248 B389 IN R24,0x19
249 9582 SWAP R24
24A 708F ANDI R24,0xF
24B 7081 ANDI R24,1
24C F4B9 BNE 0x0264
(0043) {
(0044) DELAY(10);
24D E00A LDI R16,0xA
24E E010 LDI R17,0
24F DFCF RCALL _DELAY
(0045) if(READ_PA4==0)
250 B389 IN R24,0x19
251 9582 SWAP R24
252 708F ANDI R24,0xF
253 7081 ANDI R24,1
254 F479 BNE 0x0264
(0046) {
(0047) nn++;
255 9180 0065 LDS R24,nn
257 5F8F SUBI R24,0xFF
258 9380 0065 STS nn,R24
(0048) if(nn==5)
25A 3085 CPI R24,5
25B F419 BNE 0x025F
(0049) nn=1;
25C E081 LDI R24,1
25D 9380 0065 STS nn,R24
(0050) while(READ_PA4==0);
25F B389 IN R24,0x19
260 9582 SWAP R24
261 708F ANDI R24,0xF
262 7081 ANDI R24,1
263 F3D9 BEQ 0x025F
(0051) }
(0052) }
(0053) if(READ_PA7==0)
264 B389 IN R24,0x19
265 9586 LSR R24
266 9586 LSR R24
267 9586 LSR R24
268 9586 LSR R24
269 9586 LSR R24
26A 9586 LSR R24
26B 9586 LSR R24
26C 7081 ANDI R24,1
26D F4D1 BNE 0x0288
(0054) {
(0055) DELAY(10);
26E E00A LDI R16,0xA
26F E010 LDI R17,0
270 DFAE RCALL _DELAY
(0056) if(READ_PA7==0)
271 B389 IN R24,0x19
272 9586 LSR R24
273 9586 LSR R24
274 9586 LSR R24
275 9586 LSR R24
276 9586 LSR R24
277 9586 LSR R24
278 9586 LSR R24
279 7081 ANDI R24,1
27A F419 BNE 0x027E
(0057) {
(0058) flag_start=1;
27B E081 LDI R24,1
27C 9380 0064 STS flag_start,R24
(0059) }
(0060) while(READ_PA7==0);
27E B389 IN R24,0x19
27F 9586 LSR R24
280 9586 LSR R24
281 9586 LSR R24
282 9586 LSR R24
283 9586 LSR R24
284 9586 LSR R24
285 9586 LSR R24
286 7081 ANDI R24,1
287 F3B1 BEQ 0x027E
(0061) }
288 9508 RET
(0062) }
(0063)
(0064) char key2_scan()
(0065) {
(0066) DDR_PA5=1;
_key2_scan:
289 B38A IN R24,0x1A
28A 6280 ORI R24,0x20
28B BB8A OUT 0x1A,R24
(0067) DDR_PA6=1;
28C B38A IN R24,0x1A
28D 6480 ORI R24,0x40
28E BB8A OUT 0x1A,R24
(0068) _PA5=1;
28F B38B IN R24,0x1B
290 6280 ORI R24,0x20
291 BB8B OUT 0x1B,R24
(0069) _PA6=1;
292 B38B IN R24,0x1B
293 6480 ORI R24,0x40
294 BB8B OUT 0x1B,R24
(0070) DDR_PA5=0;
295 B38A IN R24,0x1A
296 7D8F ANDI R24,0xDF
297 BB8A OUT 0x1A,R24
(0071) DDR_PA6=0;
298 B38A IN R24,0x1A
299 7B8F ANDI R24,0xBF
29A BB8A OUT 0x1A,R24
(0072)
(0073)
(0074)
(0075) if(READ_PA5==0)
29B B389 IN R24,0x19
29C 9586 LSR R24
29D 9586 LSR R24
29E 9586 LSR R24
29F 9586 LSR R24
2A0 9586 LSR R24
2A1 7081 ANDI R24,1
2A2 F4C9 BNE 0x02BC
(0076) {
(0077) DELAY(10);
2A3 E00A LDI R16,0xA
2A4 E010 LDI R17,0
2A5 DF79 RCALL _DELAY
(0078) if(READ_PA5==0)
2A6 B389 IN R24,0x19
2A7 9586 LSR R24
2A8 9586 LSR R24
2A9 9586 LSR R24
2AA 9586 LSR R24
2AB 9586 LSR R24
2AC 7081 ANDI R24,1
2AD F471 BNE 0x02BC
(0079) {
(0080) BBBuffer=1;
2AE E081 LDI R24,1
2AF 9380 0193 STS BBBuffer,R24
(0081) while(READ_PA5==0);
2B1 B389 IN R24,0x19
2B2 9586 LSR R24
2B3 9586 LSR R24
2B4 9586 LSR R24
2B5 9586 LSR R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -