📄 12864_example.lst
字号:
(0051) # define VSCK _PD4
(0052) # define VRCK _PD3
(0053) # define VSI _PD5
(0054) /*--- 定义_Use_16Bit_VitualPORT 选择两个595模式 ---*/
(0055) # define _Use_16Bit_VitualPORT
(0056)
(0057) # include "SerialToCollateral.h"
(0058)
(0059)
(0060) # define LCD12864_RS PV0
(0061) # define LCD12864_RW PV1
(0062) # define LCD12864_E PV2
(0063) # define LCD12864_CSA PV3
(0064) # define LCD12864_CSB PV4
(0065) # define LCD12864_RST PV5
(0066)
(0067) # define SETBIT_RS LCD12864_RS = High;
(0068) # define CLRBIT_RS LCD12864_RS = Low;
(0069) # define SETBIT_RW LCD12864_RW = High;
(0070) # define CLRBIT_RW LCD12864_RW = Low;
(0071) # define SETBIT_E LCD12864_E = High;refreshVirtualPORT();
(0072) # define CLRBIT_E LCD12864_E = Low;refreshVirtualPORT();
(0073) # define SETBIT_CS1 LCD12864_CSA = High;
(0074) # define CLRBIT_CS1 LCD12864_CSA = Low;
(0075) # define SETBIT_CS2 LCD12864_CSB = High;
(0076) # define CLRBIT_CS2 LCD12864_CSB = Low;
(0077) # define SETBIT_RST LCD12864_RST = High;refreshVirtualPORT();
(0078) # define CLRBIT_RST LCD12864_RST = Low;refreshVirtualPORT();
(0079)
(0080) # define LCD12864_DataTransfer(a) VPORT &= 0x00ff;VPORT |= (a<<8); refreshVirtualPORT();
(0081)
(0082) # define ReadDataPORT
(0083) # define SetDataPORTDirection_READ
(0084) # define SetDataPORTDirection_WRITE
(0085)
(0086)
(0087) # define _LCD12864_WriteOnly
(0088) # define LCD12864_WaitTime 1
(0089) # include "RD_LCD12864.h"
(0090)
(0091)
(0092) /***********************
(0093) * 全局变量声明区 *
(0094) ***********************/
(0095) unsigned int FlashGIFStringCounter = 0;
(0096) unsigned int FlashTimeCounter = 0;
(0097)
(0098) flash char LOGO[1024] = {
(0099) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0xC0,0xE0,0xE0,0x60,
(0100) 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,
(0101) 0xF8,0xF8,0xC0,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,
(0102) 0x40,0xE0,0xF0,0xB0,0xA0,0xA0,0xE0,0x40,0x00,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,
(0103) 0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xC0,0x00,0x00,0x00,0xF0,0xF0,0x80,0x80,0x00,
(0104) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xE0,0x00,
(0105) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xE0,0x90,
(0106) 0xB8,0xF0,0xE0,0xB8,0x98,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0107) 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x78,0xF0,0x10,0xF8,0xFC,0x8C,0xC8,0xFF,0x8F,
(0108) 0x86,0xFC,0xFC,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0x11,0x5B,0xFF,
(0109) 0xFF,0xFF,0xFE,0xA6,0x04,0x04,0xFC,0xF8,0x08,0x00,0x00,0x00,0x00,0x04,0x0E,0x6E,
(0110) 0x7E,0xFF,0xFF,0x1D,0x2F,0x27,0x37,0x1A,0x0C,0xFF,0xFF,0x02,0x02,0x00,0x00,0x00,
(0111) 0x00,0x00,0x08,0x9C,0xDC,0xFE,0x7F,0x3B,0x2C,0x66,0xEE,0xDF,0xFB,0xB1,0x00,0x00,
(0112) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x38,0xF8,0xFC,0x7F,0x1F,0x4F,0xC7,
(0113) 0x83,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x1E,0x07,0x81,0x81,0xD9,
(0114) 0xFD,0xFC,0xFC,0xEE,0x43,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0115) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,
(0116) 0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x01,
(0117) 0x07,0x07,0x02,0x02,0x06,0x06,0x07,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0118) 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x00,0x00,0x00,0x00,0x00,
(0119) 0x00,0x00,0x00,0x01,0x01,0x03,0x07,0x01,0x01,0x03,0x01,0x01,0x01,0x03,0x03,0x07,
(0120) 0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x03,0x03,0x01,0x00,0x00,0x00,0x00,
(0121) 0x01,0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x00,
(0122) 0x08,0x0C,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0123) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x78,0x88,
(0124) 0x8E,0x0F,0x01,0x81,0x8E,0x8E,0xFA,0x72,0x02,0xE2,0xE2,0x02,0x02,0xFE,0xFC,0x00,
(0125) 0x00,0x00,0x00,0xFE,0xFF,0x81,0x81,0x91,0x81,0xC1,0x7F,0x7F,0x41,0x41,0x41,0x91,
(0126) 0x81,0x81,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFE,0x03,0x01,
(0127) 0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x70,0x10,0x10,
(0128) 0x10,0xFE,0xFF,0x01,0x01,0x3F,0x3E,0x10,0x10,0x70,0xE0,0x00,0x00,0xC0,0xF0,0x3C,
(0129) 0x0E,0x03,0x01,0x11,0x1C,0x1E,0xE2,0x02,0x02,0x22,0x22,0x02,0x02,0x02,0xFE,0xFC,
(0130) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0131) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x3E,0x23,
(0132) 0xE1,0xE0,0x00,0x00,0xF8,0xF9,0x0F,0x06,0x00,0xFF,0xFF,0x00,0x08,0x0F,0x0F,0xF8,
(0133) 0x00,0x00,0x00,0xCC,0xC4,0x00,0x00,0x00,0x00,0x04,0xFC,0xFC,0x0D,0x01,0x02,0x03,
(0134) 0x00,0x00,0xC4,0xC8,0x00,0x00,0xC0,0xE0,0x30,0x18,0x0C,0x06,0x03,0x00,0x00,0x30,
(0135) 0x78,0xC0,0x80,0x00,0x00,0x00,0x10,0x20,0x00,0x00,0x18,0x3E,0x63,0x40,0xC0,0xE0,
(0136) 0x38,0x3F,0x3F,0x00,0x00,0xFC,0xFC,0x40,0x80,0x80,0xC3,0x7E,0x30,0xD8,0xFD,0x27,
(0137) 0x20,0x20,0x20,0xE0,0x72,0x3F,0x0C,0x00,0x00,0x22,0x22,0x00,0x00,0x00,0x3F,0xFF,
(0138) 0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0139) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,
(0140) 0x05,0x07,0x06,0x06,0x07,0x07,0x06,0x06,0x04,0x05,0x07,0x06,0x06,0x06,0x07,0x05,
(0141) 0x04,0x04,0x04,0x05,0x07,0x06,0x06,0x06,0x06,0x06,0x07,0x07,0x06,0x06,0x06,0x06,
(0142) 0x06,0x06,0x07,0x05,0x04,0x04,0x04,0x07,0x06,0x06,0x06,0x06,0x05,0x04,0x04,0x04,
(0143) 0x04,0x04,0x05,0x05,0x06,0x06,0x06,0x06,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x07,
(0144) 0x06,0x06,0x06,0x06,0x06,0x07,0x05,0x04,0x04,0x04,0x04,0x04,0x04,0x05,0x07,0x06,
(0145) 0x06,0x06,0x07,0x07,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x07,
(0146) 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0147) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x78,0x48,0xC8,0x98,0xB8,0x38,0x00,0x08,
(0148) 0xF8,0xF8,0xC8,0xC8,0xF8,0xF8,0x08,0x08,0xF8,0xF8,0x08,0x08,0xF8,0xF8,0x08,0x00,
(0149) 0x30,0x78,0x48,0xC8,0x98,0xB8,0x38,0x00,0x18,0x18,0x08,0xF8,0xF8,0x08,0x18,0x18,
(0150) 0x00,0x00,0x00,0x00,0x00,0x08,0xF8,0xF8,0x88,0x88,0xF8,0x70,0x00,0x00,0xF0,0xF8,
(0151) 0x08,0x08,0x08,0xF8,0xF0,0x00,0x08,0xF8,0xF8,0x48,0x48,0xF8,0xB0,0x00,0x00,0xF0,
(0152) 0xF8,0x08,0x08,0x08,0xF8,0xF0,0x00,0x18,0x18,0x08,0xF8,0xF8,0x08,0x18,0x18,0x08,
(0153) 0xF8,0xF8,0x48,0xE8,0xF8,0x18,0x00,0x00,0x00,0xC8,0xF8,0xF8,0xC0,0x00,0x00,0x08,
(0154) 0xF8,0xF8,0xF0,0xF0,0xF8,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0155) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x06,0x04,0x04,0x07,0x03,0x00,0x00,
(0156) 0x01,0x07,0x07,0x07,0x07,0x01,0x00,0x00,0x03,0x07,0x04,0x04,0x07,0x03,0x00,0x00,
(0157) 0x07,0x07,0x06,0x04,0x04,0x07,0x03,0x00,0x00,0x00,0x04,0x07,0x07,0x04,0x00,0x00,
(0158) 0x00,0x00,0x00,0x00,0x00,0x04,0x07,0x07,0x00,0x04,0x07,0x07,0x04,0x00,0x03,0x07,
(0159) 0x04,0x04,0x04,0x07,0x03,0x00,0x04,0x07,0x07,0x04,0x04,0x07,0x03,0x00,0x00,0x03,
(0160) 0x07,0x04,0x04,0x04,0x07,0x03,0x00,0x00,0x00,0x04,0x07,0x07,0x04,0x00,0x00,0x04,
(0161) 0x07,0x07,0x04,0x04,0x06,0x06,0x00,0x04,0x07,0x07,0x05,0x05,0x07,0x07,0x04,0x04,
(0162) 0x07,0x07,0x04,0x04,0x07,0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
(0163) };
(0164)
(0165)
(0166) /***********************
(0167) * 系统函数声明区 *
(0168) ***********************/
(0169) void SystemInit(void);
(0170) void PortInit(void);
(0171) void Timer0Init(void);
(0172)
(0173) /********************************************************
(0174) * 函数说明:端口初始化 *
(0175) ********************************************************/
(0176) void PortInit(void)
(0177) {
(0178) DDRD = 0xff;
_PortInit:
04B0 EF8F LDI R24,0xFF
04B1 BB81 OUT 0x11,R24
(0179) PORTD = 0xff;
04B2 BB82 OUT 0x12,R24
(0180)
(0181) DDRA = 0xff;
04B3 BB8A OUT 0x1A,R24
(0182) PORTA = 0xff;
04B4 BB8B OUT 0x1B,R24
(0183)
(0184) DDRC = 0xff;
04B5 BB84 OUT 0x14,R24
(0185) PORTC = 0xff;
04B6 BB85 OUT 0x15,R24
(0186)
(0187) PORTDefine();
04B7 DD98 RCALL _PORTDefine
04B8 9508 RET
(0188) }
(0189)
(0190) /********************************************************
(0191) * 函数说明:定时器0初始化函数 *
(0192) ********************************************************/
(0193) void Timer0Init(void)
(0194) {
(0195) TCCR0 = 0x00; //stop
_Timer0Init:
04B9 2422 CLR R2
04BA BE23 OUT 0x33,R2
(0196) TCNT0 = 0x83; //set count
04BB E883 LDI R24,0x83
04BC BF82 OUT 0x32,R24
(0197) TCCR0 = 0x03; //start timer
04BD E083 LDI R24,3
04BE BF83 OUT 0x33,R24
04BF 9508 RET
_Timer0OvfIsr:
04C0 938A ST R24,-Y
04C1 939A ST R25,-Y
04C2 B78F IN R24,0x3F
04C3 938A ST R24,-Y
(0198) }
(0199)
(0200) /********************************************************
(0201) * 函数说明:定时器0中断处理函数 *
(0202) ********************************************************/
(0203) void Timer0OvfIsr(void)
(0204) {
(0205) TCNT0 = 0x83;
04C4 E883 LDI R24,0x83
04C5 BF82 OUT 0x32,R24
(0206)
(0207) FlashGIFStringCounter ++;
04C6 91800065 LDS R24,FlashGIFStringCounter
04C8 91900066 LDS R25,FlashGIFStringCounter+1
04CA 9601 ADIW R24,1
04CB 93900066 STS FlashGIFStringCounter+1,R25
04CD 93800065 STS FlashGIFStringCounter,R24
(0208) FlashTimeCounter ++;
04CF 91800067 LDS R24,FlashTimeCounter
04D1 91900068 LDS R25,FlashTimeCounter+1
04D3 9601 ADIW R24,1
04D4 93900068 STS FlashTimeCounter+1,R25
04D6 93800067 STS FlashTimeCounter,R24
04D8 9189 LD R24,Y+
04D9 BF8F OUT 0x3F,R24
04DA 9199 LD R25,Y+
04DB 9189 LD R24,Y+
04DC 9518 RETI
(0209)
(0210) }
(0211)
(0212) /********************************************************
(0213) * 函数说明:系统初始化函数 *
(0214) ********************************************************/
(0215) void SystemInit(void)
(0216) {
(0217) CLI();
_SystemInit:
04DD 94F8 BCLR 7
(0218)
(0219) PortInit();
04DE DFD1 RCALL _PortInit
(0220) Timer0Init();
04DF DFD9 RCALL _Timer0Init
(0221)
(0222) LCD12864Init();
04E0 DF4E RCALL _LCD12864Init
(0223)
(0224) TIMSK = 0x01
04E1 E081 LDI R24,1
04E2 BF89 OUT 0x39,R24
04E3 9478 BSET 7
04E4 9508 RET
_main:
b --> R20
a --> R20
n --> R20
04E5 9725 SBIW R28,5
(0225)
(0226) SEI();
(0227) }
(0228)
(0229)
(0230)
(0231) void main(void)
(0232) {
(0233) char a = 0,b=0,n=0;
04E6 2744 CLR R20
(0234) SystemInit();
04E7 DFF5 RCALL _SystemInit
(0235)
(0236) LCD12864DispPicture(LOGO,128,64,0,0);
04E8 2422 CLR R2
04E9 822C STD Y+4,R2
04EA 822A STD Y+2,R2
04EB E480 LDI R24,0x40
04EC 8388 STD Y+0,R24
04ED E820 LDI R18,0x80
04EE E504 LDI R16,0x54
04EF E010 LDI R17,0
04F0 DF68 RCALL _LCD12864DispPicture
04F1 C03C RJMP 0x052E
(0237)
(0238)
(0239) while(1)
(0240) {
(0241) n++;
04F2 9543 INC R20
(0242) if (n == 64)
04F3 3440 CPI R20,0x40
04F4 F409 BNE 0x04F6
(0243) {
(0244) n = 0;
04F5 2744 CLR R20
(0245) }
(0246) LCD12864_ChooseBoth;
04F6 91E00062 LDS R30,VPORTBit
04F8 91F00063 LDS R31,VPORTBit+1
04FA 8180 LDD R24,Z+0
04FB 6088 ORI R24,0x8
04FC 8380 STD Z+0,R24
04FD 91E00062 LDS R30,VPORTBit
04FF 91F00063 LDS R31,VPORTBit+1
0501 8180 LDD R24,Z+0
0502 6180 ORI R24,0x10
0503 8380 STD Z+0,R24
(0247) setX(7);
0504 E007 LDI R16,7
0505 DEAC RCALL _setX
(0248) setY(n);
0506 2F04 MOV R16,R20
0507 DEB4 RCALL _setY
(0249) sendDataToLCD(0xff);
0508 EF0F LDI R16,0xFF
0509 DE34 RCALL _sendDataToLCD
(0250) sendDataToLCD(0x00);
050A 2700 CLR R16
050B DE32 RCALL _sendDataToLCD
(0251) sendDataToLCD(0x00);
050C 2700 CLR R16
050D DE30 RCALL _sendDataToLCD
(0252) sendDataToLCD(0x00);
050E 2700 CLR R16
050F DE2E RCALL _sendDataToLCD
(0253) sendDataToLCD(0x00);
0510 2700 CLR R16
0511 DE2C RCALL _sendDataToLCD
(0254) sendDataToLCD(0x00);
0512 2700 CLR R16
0513 DE2A RCALL _sendDataToLCD
(0255) sendDataToLCD(0x00);
0514 2700 CLR R16
0515 DE28 RCALL _sendDataToLCD
(0256) sendDataToLCD(0x00);
0516 2700 CLR R16
0517 DE26 RCALL _sendDataToLCD
(0257) sendDataToLCD(0x00);
0518 2700 CLR R16
0519 DE24 RCALL _sendDataToLCD
(0258) sendDataToLCD(0x00);
051A 2700 CLR R16
051B DE22 RCALL _sendDataToLCD
(0259) sendDataToLCD(0x00);
051C 2700 CLR R16
051D DE20 RCALL _sendDataToLCD
(0260) sendDataToLCD(0x00);
051E 2700 CLR R16
051F DE1E RCALL _sendDataToLCD
(0261) sendDataToLCD(0x00);
0520 2700 CLR R16
0521 DE1C RCALL _sendDataToLCD
(0262) sendDataToLCD(0x00);
0522 2700 CLR R16
0523 DE1A RCALL _sendDataToLCD
(0263) sendDataToLCD(0x00);
0524 2700 CLR R16
0525 DE18 RCALL _sendDataToLCD
(0264) sendDataToLCD(0x00);
0526 2700 CLR R16
0527 DE16 RCALL _sendDataToLCD
(0265) sendDataToLCD(0x00);
0528 2700 CLR R16
0529 DE14 RCALL _sendDataToLCD
(0266) sendDataToLCD(0x00);
052A 2700 CLR R16
052B DE12 RCALL _sendDataToLCD
(0267) sendDataToLCD(0x00);
FILE: <library>
052C 2700 CLR R16
052D DE10 RCALL _sendDataToLCD
052E CFC3 RJMP 0x04F2
052F 9625 ADIW R28,5
0530 9508 RET
pop_gset2:
0531 E0E2 LDI R30,2
0532 940C0543 JMP pop
pop_gset5:
0534 27EE CLR R30
0535 940C0543 JMP pop
push_gset5:
0537 92FA ST R15,-Y
0538 92EA ST R14,-Y
push_gset4:
0539 92DA ST R13,-Y
053A 92CA ST R12,-Y
push_gset3:
053B 92BA ST R11,-Y
053C 92AA ST R10,-Y
push_gset2:
053D 937A ST R23,-Y
053E 936A ST R22,-Y
push_gset1:
053F 935A ST R21,-Y
0540 934A ST R20,-Y
0541 9508 RET
pop_gset1:
0542 E0E1 LDI R30,1
pop:
0543 9149 LD R20,Y+
0544 9159 LD R21,Y+
0545 FDE0 SBRC R30,0
0546 9508 RET
0547 9169 LD R22,Y+
0548 9179 LD R23,Y+
0549 FDE1 SBRC R30,1
054A 9508 RET
054B 90A9 LD R10,Y+
054C 90B9 LD R11,Y+
054D FDE2 SBRC R30,2
054E 9508 RET
054F 90C9 LD R12,Y+
0550 90D9 LD R13,Y+
0551 FDE3 SBRC R30,3
0552 9508 RET
0553 90E9 LD R14,Y+
0554 90F9 LD R15,Y+
0555 9508 RET
lsl16:
0556 2322 TST R18
0557 F021 BEQ 0x055C
0558 0F00 LSL R16
0559 1F11 ROL R17
055A 952A DEC R18
055B CFFA RJMP lsl16
055C 9508 RET
lsl8:
055D 2311 TST R17
055E F019 BEQ 0x0562
055F 0F00 LSL R16
0560 951A DEC R17
0561 CFFB RJMP lsl8
0562 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -