⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.lst

📁 用ATMEGA88推动LCD240128液晶的测试程序。按config.h的定义连接AVR和LCD
💻 LST
📖 第 1 页 / 共 2 页
字号:
__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 + -