📄 test.lst
字号:
__text_start:
__start:
079A EFCF LDI R28,0xFF
079B E0D4 LDI R29,4
079C BFCD OUT 0x3D,R28
079D BFDE OUT 0x3E,R29
079E 51C0 SUBI R28,0x10
079F 40D0 SBCI R29,0
07A0 EA0A LDI R16,0xAA
07A1 8308 STD Y+0,R16
07A2 2400 CLR R0
07A3 E0E0 LDI R30,0
07A4 E0F1 LDI R31,1
07A5 E011 LDI R17,1
07A6 30E0 CPI R30,0
07A7 07F1 CPC R31,R17
07A8 F011 BEQ 0x07AB
07A9 9201 ST R0,Z+
07AA CFFB RJMP 0x07A6
07AB 8300 STD Z+0,R16
07AC E3E4 LDI R30,0x34
07AD E0FF LDI R31,0xF
07AE E0A0 LDI R26,0
07AF E0B1 LDI R27,1
07B0 E01F LDI R17,0xF
07B1 33E4 CPI R30,0x34
07B2 07F1 CPC R31,R17
07B3 F021 BEQ 0x07B8
07B4 95C8 LPM
07B5 9631 ADIW R30,1
07B6 920D ST R0,X+
07B7 CFF9 RJMP 0x07B1
07B8 D022 RCALL _main
_exit:
07B9 CFFF RJMP _exit
FILE: E:\工作\240X12~1\(000)\TEST.C
(0001) //ICC-AVR application builder : 2005-10-22 20:39:47
(0002) // Target : M88
(0003) // Crystal: 16.0000Mhz
(0004) #include "config.h"
(0005) #include "hanzi.h"
(0006) //------------------------------------------------------------------------------
(0007) void port_init(void)
(0008) {
(0009) PORTB = 0xFF;
_port_init:
07BA EF8F LDI R24,0xFF
07BB B985 OUT 0x05,R24
(0010) DDRB = 0xFF;
07BC B984 OUT 0x04,R24
(0011) PORTC = 0xFF; //m103 output only
07BD B988 OUT 0x08,R24
(0012) DDRC = 0xFF;
07BE B987 OUT 0x07,R24
(0013) PORTD = 0xFF;
07BF B98B OUT 0x0B,R24
(0014) DDRD = 0xFF;
07C0 B98A OUT 0x0A,R24
07C1 9508 RET
(0015) }
(0016) void init_devices(void)
(0017) {
(0018) CLI(); //disable all interrupts
_init_devices:
07C2 94F8 BCLR 7
(0019)
(0020) port_init();
07C3 DFF6 RCALL _port_init
(0021)
(0022) MCUCR = 0x00;
07C4 2422 CLR R2
07C5 BE25 OUT 0x35,R2
(0023) EICRA = 0x00; //extended ext ints
07C6 92200069 STS 0x69,R2
(0024) EIMSK = 0x00;
07C8 BA2D OUT 0x1D,R2
(0025)
(0026) TIMSK0 = 0x00; //timer 0 interrupt sources
07C9 9220006E STS 0x6E,R2
(0027) TIMSK1 = 0x00; //timer 1 interrupt sources
07CB 9220006F STS 0x6F,R2
(0028) TIMSK2 = 0x00; //timer 2 interrupt sources
07CD 92200070 STS 0x70,R2
(0029)
(0030) PCMSK0 = 0x00; //pin change mask 0
07CF 9220006B STS 0x6B,R2
(0031) PCMSK1 = 0x00; //pin change mask 1
07D1 9220006C STS 0x6C,R2
(0032) PCMSK2 = 0x00; //pin change mask 2
07D3 9220006D STS 0x6D,R2
(0033) PCICR = 0x00; //pin change enable
07D5 92200068 STS 0x68,R2
(0034) PRR = 0x00; //power controller
07D7 92200064 STS 0x64,R2
(0035)
(0036) SEI(); //re-enable interrupts
07D9 9478 BSET 7
07DA 9508 RET
(0037) }
(0038) //------------------------------------------------------------------------------
(0039)
(0040)
(0041) //------------------------------------------------------------------------------
(0042) void main(void)
(0043) {
(0044) init_devices();
_main:
07DB DFE6 RCALL _init_devices
(0045) lcd_init();
07DC D08E RCALL _lcd_init
(0046) lcd_clear(0xFF);
07DD EF0F LDI R16,0xFF
07DE E010 LDI R17,0
07DF D0AC RCALL _lcd_clear
(0047) lcd_delay(500);
07E0 EF04 LDI R16,0xF4
07E1 E011 LDI R17,1
07E2 D00A RCALL _lcd_delay
(0048) lcd_clear(0xAA);
07E3 EA0A LDI R16,0xAA
07E4 E010 LDI R17,0
07E5 D0A6 RCALL _lcd_clear
(0049) lcd_delay(500);
07E6 EF04 LDI R16,0xF4
07E7 E011 LDI R17,1
07E8 D004 RCALL _lcd_delay
(0050) lcd_print240128(ouravr);
07E9 E304 LDI R16,0x34
07EA E010 LDI R17,0
07EB D0D1 RCALL _lcd_print240128
07EC 9508 RET
_lcd_delay:
i --> R20
time --> R16
07ED D0FD RCALL push_gset1
FILE: E:\工作\240X12~1\(000)\240128.C
(0001) /*******************************************************************************
(0002) T6963C液晶驱动 RT240128
(0003) MAGE88 16M
(0004) *******************************************************************************/
(0005) #include "CONFIG.H"
(0006)
(0007) #define LCD_LEFT 0
(0008) #define LCD_TOP 0
(0009) #define LCD_RIGHT 239
(0010) #define LCD_BOTTOM 127
(0011)
(0012) #define LCD_DELAY 0
(0013) /******************************************************************************/
(0014) void lcd_delay(unsigned int time)
(0015) {
07EE C008 RJMP 0x07F7
(0016) unsigned int i;
(0017) while(time--)
(0018) {
(0019) i=1000;
07EF EE48 LDI R20,0xE8
07F0 E053 LDI R21,3
(0020) while(--i);
07F1 01CA MOVW R24,R20
07F2 9701 SBIW R24,1
07F3 01AC MOVW R20,R24
07F4 3040 CPI R20,0
07F5 0745 CPC R20,R21
07F6 F7D1 BNE 0x07F1
07F7 0118 MOVW R2,R16
07F8 5001 SUBI R16,1
07F9 4010 SBCI R17,0
07FA 2022 TST R2
07FB F799 BNE 0x07EF
07FC 2033 TST R3
07FD F789 BNE 0x07EF
07FE D0EF RCALL pop_gset1
07FF 9508 RET
(0021) }
(0022) }
(0023) /***********************************************************************************/
(0024) void lcd_wd(uchar lcd_data)/*写数据*/
(0025) {
(0026) LCD_DDR = 0x00;
_lcd_wd:
lcd_data --> R16
0800 2422 CLR R2
0801 B82A OUT 0x0A,R2
(0027) LCD_CODE_P &= ~(BIT(LCD_RD) | BIT(LCD_CE));
0802 B185 IN R24,0x05
0803 7F83 ANDI R24,0xF3
0804 B985 OUT 0x05,R24
(0028) LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_CD));
0805 B185 IN R24,0x05
0806 6083 ORI R24,3
0807 B985 OUT 0x05,R24
(0029) while( (LCD_DATA & 0x03) != 0x03 );
0808 B189 IN R24,0x09
0809 7083 ANDI R24,3
080A 3083 CPI R24,3
080B F7E1 BNE 0x0808
(0030)
(0031)
(0032) LCD_RD_H;NOP();NOP();NOP();NOP();NOP();NOP();
080C 9A2A SBI 0x05,2
080D 0000 NOP
080E 0000 NOP
080F 0000 NOP
0810 0000 NOP
0811 0000 NOP
0812 0000 NOP
(0033) LCD_CD_L;NOP();NOP();NOP();NOP();NOP();NOP();
0813 9828 CBI 0x05,0
0814 0000 NOP
0815 0000 NOP
0816 0000 NOP
0817 0000 NOP
0818 0000 NOP
0819 0000 NOP
(0034) LCD_RW_L;NOP();NOP();NOP();NOP();NOP();NOP();
081A 9829 CBI 0x05,1
081B 0000 NOP
081C 0000 NOP
081D 0000 NOP
081E 0000 NOP
081F 0000 NOP
0820 0000 NOP
(0035)
(0036)
(0037) LCD_DDR = 0XFF;
0821 EF8F LDI R24,0xFF
0822 B98A OUT 0x0A,R24
(0038) LCD_PORT = lcd_data;NOP();NOP();NOP();NOP();NOP();NOP();NOP();
0823 B90B OUT 0x0B,R16
0824 0000 NOP
0825 0000 NOP
0826 0000 NOP
0827 0000 NOP
0828 0000 NOP
0829 0000 NOP
082A 0000 NOP
(0039) LCD_CODE_P |= (BIT(LCD_RW) | BIT(LCD_RD) | BIT(LCD_CD) | BIT(LCD_CE));
082B B185 IN R24,0x05
082C 608F ORI R24,0xF
082D B985 OUT 0x05,R24
082E 9508 RET
(0040) }
(0041) /***********************************************************************************/
(0042) void lcd_wc(uchar lcd_code)/*写命令*/
(0043) {
(0044) LCD_DDR = 0X00;
_lcd_wc:
lcd_code --> R16
082F 2422 CLR R2
0830 B82A OUT 0x0A,R2
(0045) LCD_CODE_P &= ~(BIT(LCD_RD) | BIT(LCD_CE));
0831 B185 IN R24,0x05
0832 7F83 ANDI R24,0xF3
0833 B985 OUT 0x05,R24
(0046) LCD_CODE_P |= (BIT(LCD_RD) | BIT(LCD_CE));
0834 B185 IN R24,0x05
0835 608C ORI R24,0xC
0836 B985 OUT 0x05,R24
(0047) while( (LCD_DATA & 0X03) != 0X03 );
0837 B189 IN R24,0x09
0838 7083 ANDI R24,3
0839 3083 CPI R24,3
083A F7E1 BNE 0x0837
(0048)
(0049)
(0050) LCD_RD_H;NOP();NOP();NOP();NOP();NOP();NOP();
083B 9A2A SBI 0x05,2
083C 0000 NOP
083D 0000 NOP
083E 0000 NOP
083F 0000 NOP
0840 0000 NOP
0841 0000 NOP
(0051) LCD_CD_H;NOP();NOP();NOP();NOP();NOP();NOP();
0842 9A28 SBI 0x05,0
0843 0000 NOP
0844 0000 NOP
0845 0000 NOP
0846 0000 NOP
0847 0000 NOP
0848 0000 NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -