📄 8255.lst
字号:
26C 9AA9 SBI 0x15,1
(0342) A11;
26D 9AAE SBI 0x15,6
(0343) delay(1);
26E E001 LDI R16,1
26F E010 LDI R17,0
270 DFD3 RCALL _delay
(0344) shuju=d;
271 BAA8 OUT 0x18,R10
(0345) WRON ;
272 98A8 CBI 0x15,0
(0346) delay(5);
273 E005 LDI R16,5
274 E010 LDI R17,0
275 DFCE RCALL _delay
(0347) WROFF;
276 9AA8 SBI 0x15,0
277 90A9 LD R10,Y+
278 9508 RET
_write_command:
cmdcode --> R10
279 92AA ST R10,-Y
27A 2EA0 MOV R10,R16
(0348) }
(0349)
(0350)
(0351) //LCD
(0352) void write_command(unsigned char cmdcode)
(0353) {
(0354) RS0;
27B 981B CBI 0x03,3
(0355) RW0;
27C 981D CBI 0x03,5
(0356) writePA(cmdcode);
27D 2D0A MOV R16,R10
27E DFDA RCALL _writePA
(0357) delay(1);
27F E001 LDI R16,1
280 E010 LDI R17,0
281 DFC2 RCALL _delay
(0358) E1;
282 9A1E SBI 0x03,6
(0359) delay(1);
283 E001 LDI R16,1
284 E010 LDI R17,0
285 DFBE RCALL _delay
(0360) E0;
286 981E CBI 0x03,6
287 90A9 LD R10,Y+
288 9508 RET
_write_data:
Dispdata --> R10
289 92AA ST R10,-Y
28A 2EA0 MOV R10,R16
(0361) }
(0362)
(0363)
(0364)
(0365) void write_data(unsigned char Dispdata)
(0366) {
(0367) RS1;
28B 9A1B SBI 0x03,3
(0368) RW0;
28C 981D CBI 0x03,5
(0369) writePA(Dispdata);
28D 2D0A MOV R16,R10
28E DFCA RCALL _writePA
(0370) delay(1);
28F E001 LDI R16,1
290 E010 LDI R17,0
291 DFB2 RCALL _delay
(0371) E1;
292 9A1E SBI 0x03,6
(0372) delay(1);
293 E001 LDI R16,1
294 E010 LDI R17,0
295 DFAE RCALL _delay
(0373) E0;
296 981E CBI 0x03,6
297 90A9 LD R10,Y+
298 9508 RET
(0374) }
(0375) //通道
(0376) void tongdao(unsigned char i)
(0377) {if(i==1) {PORTC&=~(1<<4);PORTC&=~(1<<3); PORTC|=(1<<2);}
_tongdao:
i --> R16
299 3001 CPI R16,1
29A F419 BNE 0x029E
29B 98AC CBI 0x15,4
29C 98AB CBI 0x15,3
29D 9AAA SBI 0x15,2
(0378) if(i==2) {PORTC|=(1<<4);;PORTC&=~(1<<3); PORTC|=(1<<2);}
29E 3002 CPI R16,2
29F F419 BNE 0x02A3
2A0 9AAC SBI 0x15,4
2A1 98AB CBI 0x15,3
2A2 9AAA SBI 0x15,2
(0379) if(i==0) {PORTC&=~(1<<4);PORTC&=~(1<<3); PORTC&=~(1<<2);}
2A3 2300 TST R16
2A4 F419 BNE 0x02A8
2A5 98AC CBI 0x15,4
2A6 98AB CBI 0x15,3
2A7 98AA CBI 0x15,2
2A8 9508 RET
_Clr_Scr:
k --> R20
j --> R22
2A9 934A ST R20,-Y
2AA 936A ST R22,-Y
(0380) }
(0381)
(0382)
(0383) void Clr_Scr() //清屏
(0384) {
(0385) unsigned char j,k;
(0386) for(k=0;k<8;k++)
2AB 2744 CLR R20
2AC C023 RJMP 0x02D0
(0387) {
(0388) LCDCS21;
2AD 9A1A SBI 0x03,2
(0389) LCDCS10;
2AE 9819 CBI 0x03,1
(0390) delay(10);
2AF E00A LDI R16,0xA
2B0 E010 LDI R17,0
2B1 DF92 RCALL _delay
(0391) write_command((Page_Add+k));
2B2 2F04 MOV R16,R20
2B3 5408 SUBI R16,0x48
2B4 DFC4 RCALL _write_command
(0392) write_command((Col_Add+0));
2B5 E400 LDI R16,0x40
2B6 DFC2 RCALL _write_command
(0393) for(j=0;j<64;j++)
2B7 2766 CLR R22
2B8 C003 RJMP 0x02BC
(0394) write_data(0x00);
2B9 2700 CLR R16
2BA DFCE RCALL _write_data
2BB 9563 INC R22
2BC 3460 CPI R22,0x40
2BD F3D8 BCS 0x02B9
(0395) LCDCS20;
2BE 981A CBI 0x03,2
(0396) LCDCS11;
2BF 9A19 SBI 0x03,1
(0397) delay(10);
2C0 E00A LDI R16,0xA
2C1 E010 LDI R17,0
2C2 DF81 RCALL _delay
(0398) write_command((Page_Add+k));
2C3 2F04 MOV R16,R20
2C4 5408 SUBI R16,0x48
2C5 DFB3 RCALL _write_command
(0399) write_command((Col_Add+0));
2C6 E400 LDI R16,0x40
2C7 DFB1 RCALL _write_command
(0400) for(j=64;j<128;j++)
2C8 E460 LDI R22,0x40
2C9 C003 RJMP 0x02CD
(0401) write_data(0x00);
2CA 2700 CLR R16
2CB DFBD RCALL _write_data
2CC 9563 INC R22
2CD 3860 CPI R22,0x80
2CE F3D8 BCS 0x02CA
2CF 9543 INC R20
2D0 3048 CPI R20,0x8
2D1 F2D8 BCS 0x02AD
2D2 9169 LD R22,Y+
2D3 9149 LD R20,Y+
2D4 9508 RET
_disp_zf:
j --> R20
i --> R12
sz --> Y,+8
X --> R10
Y --> R22
2D5 940E 21F5 CALL push_xgsetF03C
2D7 2EA2 MOV R10,R18
2D8 2F60 MOV R22,R16
(0402) }
(0403) }
(0404)
(0405)
(0406) void disp_zf(unsigned char Y,unsigned char X, const unsigned char *sz)
(0407) {
(0408) unsigned char j=0,i=0;
2D9 2744 CLR R20
2DA 24CC CLR R12
(0409) for(j=0;j<2;j++)
2DB C01B RJMP 0x02F7
(0410) {
(0411) write_command((Page_Add+Y+j));
2DC 2F06 MOV R16,R22
2DD 5408 SUBI R16,0x48
2DE 0F04 ADD R16,R20
2DF DF99 RCALL _write_command
(0412) write_command((Col_Add+X));
2E0 2D0A MOV R16,R10
2E1 5C00 SUBI R16,0xC0
2E2 DF96 RCALL _write_command
(0413) for(i=0;i<6;i++)
2E3 24CC CLR R12
2E4 C00E RJMP 0x02F3
(0414) write_data(sz[6*j+i]);
2E5 E086 LDI R24,6
2E6 9F84 MUL R24,R20
2E7 01F0 MOVW R30,R0
2E8 2C2C MOV R2,R12
2E9 2433 CLR R3
2EA 0DE2 ADD R30,R2
2EB 1DF3 ADC R31,R3
2EC 8408 LDD R0,Y+8
2ED 8419 LDD R1,Y+9
2EE 0DE0 ADD R30,R0
2EF 1DF1 ADC R31,R1
2F0 9106 ELPM R16,9(Z)
2F1 DF97 RCALL _write_data
2F2 94C3 INC R12
2F3 2D8C MOV R24,R12
2F4 3086 CPI R24,6
2F5 F378 BCS 0x02E5
2F6 9543 INC R20
2F7 3042 CPI R20,2
2F8 F318 BCS 0x02DC
2F9 940C 21FE JMP pop_xgsetF03C
_disp_hz:
j --> R20
i --> R12
hz --> Y,+8
X --> R10
Y --> R22
2FB 940E 21F5 CALL push_xgsetF03C
2FD 2EA2 MOV R10,R18
2FE 2F60 MOV R22,R16
(0415) }
(0416) }
(0417)
(0418) /*---------------------指定位置显示汉字16*16-----------------------*/
(0419)
(0420) void disp_hz(unsigned char Y,unsigned char X, const unsigned char *hz)
(0421) {
(0422) unsigned char j=0,i=0;
2FF 2744 CLR R20
300 24CC CLR R12
(0423) for(j=0;j<2;j++)
301 C01B RJMP 0x031D
(0424) {
(0425) write_command((Page_Add+Y+j)); //列在前行在后
302 2F06 MOV R16,R22
303 5408 SUBI R16,0x48
304 0F04 ADD R16,R20
305 DF73 RCALL _write_command
(0426) write_command((Col_Add+X));
306 2D0A MOV R16,R10
307 5C00 SUBI R16,0xC0
308 DF70 RCALL _write_command
(0427) for(i=0;i<12;i++)
309 24CC CLR R12
30A C00E RJMP 0x0319
(0428) write_data(hz[12*j+i]);
30B E08C LDI R24,0xC
30C 9F84 MUL R24,R20
30D 01F0 MOVW R30,R0
30E 2C2C MOV R2,R12
30F 2433 CLR R3
310 0DE2 ADD R30,R2
311 1DF3 ADC R31,R3
312 8408 LDD R0,Y+8
313 8419 LDD R1,Y+9
314 0DE0 ADD R30,R0
315 1DF1 ADC R31,R1
316 9106 ELPM R16,9(Z)
317 DF71 RCALL _write_data
318 94C3 INC R12
319 2D8C MOV R24,R12
31A 308C CPI R24,0xC
31B F378 BCS 0x030B
31C 9543 INC R20
31D 3042 CPI R20,2
31E F318 BCS 0x0302
31F 940C 21FE JMP pop_xgsetF03C
(0429) }
(0430) }
(0431)
(0432) /*------------------初始化LCD屏--------------------------*/
(0433) void init_lcd()
(0434) {
(0435) RST0;
_init_lcd:
321 981F CBI 0x03,7
(0436) delay(1);
322 E001 LDI R16,1
323 E010 LDI R17,0
324 DF1F RCALL _delay
(0437) RST1;
325 9A1F SBI 0x03,7
(0438) delay(1);
326 E001 LDI R16,1
327 E010 LDI R17,0
328 DF1B RCALL _delay
(0439)
(0440) LCDCS21;
329 9A1A SBI 0x03,2
(0441) LCDCS11;
32A 9A19 SBI 0x03,1
(0442)
(0443) delay(100);
32B E604 LDI R16,0x64
32C E010 LDI R17,0
32D DF16 RCALL _delay
(0444) write_command(Disp_Off);
32E E30E LDI R16,0x3E
32F DF49 RCALL _write_command
(0445) write_command((Page_Add+0));
330 EB08 LDI R16,0xB8
331 DF47 RCALL _write_command
(0446) write_command((Start_Line+0));
332 EC00 LDI R16,0xC0
333 DF45 RCALL _write_command
(0447) write_command((Col_Add+0));
334 E400 LDI R16,0x40
335 DF43 RCALL _write_command
(0448) write_command((Disp_On));
336 E30F LDI R16,0x3F
337 DF41 RCALL _write_command
338 9508 RET
(0449) }
(0450)
(0451) void init_IO()
(0452) {
(0453) DDRE=0xEF;
_init_IO:
339 EE8F LDI R24,0xEF
33A B982 OUT 0x02,R24
(0454) PORTE=0xff;
33B EF8F LDI R24,0xFF
33C B983 OUT 0x03,R24
(0455) DDRB=0xff;
33D BB87 OUT 0x17,R24
(0456) PORTB=0xff;
33E BB88 OUT 0x18,R24
(0457) DDRD=0xf0;
33F EF80 LDI R24,0xF0
340 BB81 OUT 0x11,R24
(0458) PORTD=0xf0;
341 BB82 OUT 0x12,R24
(0459) DDRF=0xfb;
342 EF8B LDI R24,0xFB
343 9380 0061 STS 0x0061,R24
(0460) PORTF=0xfb;
345 9380 0062 STS 0x0062,R24
(0461) DDRG=0xff;
347 EF8F LDI R24,0xFF
348 9380 0064 STS 0x0064,R24
(0462) PORTG=0xff;
34A 9380 0065 STS 0x0065,R24
(0463) DDRA=0XFF;
34C BB8A OUT 0x1A,R24
(0464) PORTA=0XFF;
34D BB8B OUT 0x1B,R24
(0465) DDRC=0XFF;
34E BB84 OUT 0x14,R24
(0466) PORTC=0XFF;
34F BB85 OUT 0x15,R24
350 9508 RET
_startDA:
i --> R20
da --> R22
351 940E 21CF CALL push_xgsetF000
353 01B8 MOVW R22,R16
(0467)
(0468) }
(0469)
(0470) //TLC5615
(0471) void startDA(unsigned int da)
(0472) {
(0473) unsigned char i;
(0474) da<<=6;
354 E026 LDI R18,6
355 E030 LDI R19,0
356 018B MOVW R16,R22
357 940E 2235 CALL lsl16
359 01B8 MOVW R22,R16
(0475) CS_DA0;asm("nop");
35A 9897 CBI 0x12,7
35B 0000 NOP
(0476) SPI_CLK0;
35C 9896 CBI 0x12,6
(0477) for (i=0;i<11;i++)
35D 2744 CLR R20
35E C01D RJMP 0x037C
(0478) {
(0479) if((da&0x8000)==0x8000)
35F 01CB MOVW R24,R22
360 7080 ANDI R24,0
361 7890 ANDI R25,0x80
362 3080 CPI R24,0
363 E8E0 LDI R30,0x80
364 079E CPC R25,R30
365 F429 BNE 0x036B
(0480) SPI_DATA1;
366 9180 0062 LDS R24,0x0062
368 6081 ORI R24,1
369 9380 0062 STS 0x0062,R24
(0481) if((da&0x8000)!=0x8000)
36B 01CB MOVW R24,R22
36C 7080 ANDI R24,0
36D 7890 ANDI R25,0x80
36E 3080 CPI R24,0
36F E8E0 LDI R30,0x80
370 079E CPC R25,R30
371 F029 BEQ 0x0377
(0482) SPI_DATA0;
372 9180 0062 LDS R24,0x0062
374 7F8E ANDI R24,0xFE
375 9380 0062 STS 0x0062,R24
(0483) SPI_CLK1;
377 9A96 SBI 0x12,6
(0484) da<<=1;
378 0F66 LSL R22
379 1F77 ROL R23
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -