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

📄 80_8bit.lst

📁 128X128的TFT并口驱动测试程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
    248A E5CF      LDI	R28,0x5F
    248B E0D8      LDI	R29,0x8
    248C BFCD      OUT	0x3D,R28
    248D BFDE      OUT	0x3E,R29
    248E 52C0      SUBI	R28,0x20
    248F 40D0      SBCI	R29,0
    2490 EA0A      LDI	R16,0xAA
    2491 8308      STD	Y+0,R16
    2492 2400      CLR	R0
    2493 E6E0      LDI	R30,0x60
    2494 E0F0      LDI	R31,0
    2495 E010      LDI	R17,0
    2496 36E0      CPI	R30,0x60
    2497 07F1      CPC	R31,R17
    2498 F011      BEQ	0x249B
    2499 9201      ST	R0,Z+
    249A CFFB      RJMP	0x2496
    249B 8300      STD	Z+0,R16
    249C E1E4      LDI	R30,0x14
    249D E4F9      LDI	R31,0x49
    249E E6A0      LDI	R26,0x60
    249F E0B0      LDI	R27,0
    24A0 E419      LDI	R17,0x49
    24A1 31E4      CPI	R30,0x14
    24A2 07F1      CPC	R31,R17
    24A3 F021      BEQ	0x24A8
    24A4 95C8      LPM
    24A5 9631      ADIW	R30,1
    24A6 920D      ST	R0,X+
    24A7 CFF9      RJMP	0x24A1
    24A8 940E25DF  CALL	_main
_exit:
    24AA CFFF      RJMP	_exit
FILE: D:\taobao\src\n8bit.c
(0001) //ICC-AVR application builder : 2008-11-2 11:21:49
(0002) // Target : M32
(0003) // Crystal: 8.0000Mhz
(0004) /******************************************************************************
(0005) Copyright 2008 海景电子
(0006) All rights reserved.
(0007) 
(0008) 1.6寸彩屏AVR DEMO
(0009) 
(0010) 版本:1.0.0
(0011) Auther:康锦海
(0012) 完成日期:2008.12.14
(0013) 主频:8.000M
(0014) 液晶型号:  128X128 26万色      驱动芯片:三星S6D0117
(0015) 淘宝长期供货:http://shop36350482.taobao.com/
(0016) 
(0017) 技术支持:
(0018) 康锦海    手机:  13316518267(接听免费)
(0019)             QQ:   546829846
(0020)          email:luckroll@yahoo.com.cn
(0021) 
(0022) ******************************************************************************/
(0023) #include <iom32v.h>
(0024) #include <macros.h>
(0025) 
(0026) //Signal bit definitions
(0027) 
(0028) 
(0029) 
(0030) 
(0031) #define  lcd_data   PORTD
(0032) #define	 lcd_cs	    0
(0033) #define	 lcd_rst	1
(0034) #define	 lcd_rs	    2
(0035) #define  lcd_rd     3
(0036) #define  lcd_led    4
(0037) #define	 lcd_wr 	5
(0038) #define  SetLcdRS   PORTA|=(1<<lcd_rs);
(0039) #define  ClrLcdRS   PORTA&=~(1<<lcd_rs);
(0040) #define  SetLcdWR   PORTA |=(1<<lcd_wr);
(0041) #define  ClrLcdWR   PORTA &=~(1<<lcd_wr);
(0042) #define  Setled     PORTA|=(1<<lcd_led);
(0043) #define  Clrled     PORTA&=~(1<<lcd_led);
(0044) #define  SetLcdRST  PORTA|=(1<<lcd_rst);
(0045) #define  ClrLcdRST  PORTA&=~(1<<lcd_rst);
(0046) #define  SetLcdCS   PORTA|=(1<<lcd_cs);
(0047) #define  ClrLcdCS   PORTA&=~(1<<lcd_cs);
(0048) const unsigned char AVR_LOGO[18624];
(0049) void port_init(void)
(0050) {
(0051)      PORTA = 0x2F;
_port_init:
    24AB E28F      LDI	R24,0x2F
    24AC BB8B      OUT	0x1B,R24
(0052)      DDRA  = 0xFF;
    24AD EF8F      LDI	R24,0xFF
    24AE BB8A      OUT	0x1A,R24
(0053)      PORTB = 0x00;
    24AF 2422      CLR	R2
    24B0 BA28      OUT	0x18,R2
(0054)      DDRB  = 0x00;
    24B1 BA27      OUT	0x17,R2
(0055)      PORTC = 0x00; 
    24B2 BA25      OUT	0x15,R2
(0056)      DDRC  = 0x00;
    24B3 BA24      OUT	0x14,R2
(0057)      PORTD = 0xff;
    24B4 BB82      OUT	0x12,R24
(0058)      DDRD  = 0xff;
    24B5 BB81      OUT	0x11,R24
    24B6 9508      RET
(0059) }
(0060) 
(0061) //call this routine to initialize all peripherals
(0062) void init_devices(void)
(0063) {
(0064)      CLI(); //disable all interrupts
_init_devices:
    24B7 94F8      BCLR	7
(0065)      port_init();
    24B8 DFF2      RCALL	_port_init
(0066) 
(0067)      MCUCR = 0x00;
    24B9 2422      CLR	R2
    24BA BE25      OUT	0x35,R2
(0068)      GICR  = 0x00;
    24BB BE2B      OUT	0x3B,R2
(0069)      TIMSK = 0x00; //timer interrupt sources
    24BC BE29      OUT	0x39,R2
(0070)      SEI(); //re-enable interrupts
    24BD 9478      BSET	7
    24BE 9508      RET
(0071)      //all peripherals are now initialized
(0072) }
(0073) void Delay_1us(void)//1us延时函数
(0074) {
(0075)      asm("nop");
_Delay_1us:
    24BF 0000      NOP
    24C0 9508      RET
_Delay_nus:
  i                    --> R20
  n                    --> R22
    24C1 940E2637  CALL	push_gset2
    24C3 01B8      MOVW	R22,R16
(0076) }
(0077) void Delay_nus(unsigned int n)//N us延时函数
(0078) {
(0079)      unsigned int i=0;
    24C4 2744      CLR	R20
    24C5 2755      CLR	R21
(0080)      for (i=0;i<n;i++)
    24C6 C003      RJMP	0x24CA
(0081)      Delay_1us();
    24C7 DFF7      RCALL	_Delay_1us
    24C8 5F4F      SUBI	R20,0xFF
    24C9 4F5F      SBCI	R21,0xFF
    24CA 1746      CP	R20,R22
    24CB 0757      CPC	R21,R23
    24CC F3D0      BCS	0x24C7
    24CD 940E262E  CALL	pop_gset2
    24CF 9508      RET
(0082) }
(0083) void Delay_1ms(void)//1ms延时函数
(0084) {
(0085)      unsigned int i;
(0086)      for (i=0;i<1140;i++);
_Delay_1ms:
  i                    --> R16
    24D0 2700      CLR	R16
    24D1 2711      CLR	R17
    24D2 C002      RJMP	0x24D5
    24D3 5F0F      SUBI	R16,0xFF
    24D4 4F1F      SBCI	R17,0xFF
    24D5 3704      CPI	R16,0x74
    24D6 E0E4      LDI	R30,4
    24D7 071E      CPC	R17,R30
    24D8 F3D0      BCS	0x24D3
    24D9 9508      RET
_Delay_nms:
  i                    --> R20
  n                    --> R22
    24DA 940E2637  CALL	push_gset2
    24DC 01B8      MOVW	R22,R16
(0087) }
(0088) void Delay_nms(unsigned int n)//N ms延时函数
(0089) {
(0090)      unsigned int i=0;
    24DD 2744      CLR	R20
    24DE 2755      CLR	R21
(0091)      for (i=0;i<n;i++)
    24DF C003      RJMP	0x24E3
(0092)      Delay_1ms();
    24E0 DFEF      RCALL	_Delay_1ms
    24E1 5F4F      SUBI	R20,0xFF
    24E2 4F5F      SBCI	R21,0xFF
    24E3 1746      CP	R20,R22
    24E4 0757      CPC	R21,R23
    24E5 F3D0      BCS	0x24E0
    24E6 940E262E  CALL	pop_gset2
    24E8 9508      RET
(0093) }
(0094) 
(0095) void write_data(unsigned char data)
(0096) {
(0097) 
(0098) 
(0099) 	 SetLcdRS;
_write_data:
  data                 --> R16
    24E9 9ADA      SBI	0x1B,2
(0100) 	 ClrLcdCS;
    24EA 98D8      CBI	0x1B,0
(0101) 
(0102) 	 lcd_data=data;
    24EB BB02      OUT	0x12,R16
(0103) 	 ClrLcdWR;
    24EC 98DD      CBI	0x1B,5
(0104) //	 asm("nop");
(0105) 	 SetLcdWR;
    24ED 9ADD      SBI	0x1B,5
(0106) 
(0107) 	
(0108) 	
(0109) 	
(0110) 	 SetLcdCS;
    24EE 9AD8      SBI	0x1B,0
    24EF 9508      RET
(0111) 
(0112) }
(0113) void write_data16(unsigned char dataH,unsigned char dataL)
(0114) {
(0115) 	
(0116) 
(0117) 	 SetLcdRS;
_write_data16:
  dataL                --> R18
  dataH                --> R16
    24F0 9ADA      SBI	0x1B,2
(0118) 	 ClrLcdCS;
    24F1 98D8      CBI	0x1B,0
(0119) 	 lcd_data=dataH;
    24F2 BB02      OUT	0x12,R16
(0120)      ClrLcdWR;
    24F3 98DD      CBI	0x1B,5
(0121) //	 asm("nop");
(0122) 	 SetLcdWR;
    24F4 9ADD      SBI	0x1B,5
(0123) 	 lcd_data=dataL;
    24F5 BB22      OUT	0x12,R18
(0124) 	 ClrLcdWR;
    24F6 98DD      CBI	0x1B,5
(0125) //	 asm("nop");
(0126) 	 SetLcdWR;
    24F7 9ADD      SBI	0x1B,5
(0127) 				
(0128) 	 SetLcdCS;
    24F8 9AD8      SBI	0x1B,0
    24F9 9508      RET
(0129) }
(0130) void write_cmd(unsigned char data)
(0131) {
(0132) 	 ClrLcdRS;
_write_cmd:
  data                 --> R16
    24FA 98DA      CBI	0x1B,2
(0133) 	 ClrLcdCS;
    24FB 98D8      CBI	0x1B,0
(0134) 	
(0135) 	 lcd_data=0;
    24FC 2422      CLR	R2
    24FD BA22      OUT	0x12,R2
(0136) 	 ClrLcdWR;
    24FE 98DD      CBI	0x1B,5
(0137) //	 asm("nop");
(0138) 	 SetLcdWR;
    24FF 9ADD      SBI	0x1B,5
(0139) 
(0140) 	 lcd_data=data;
    2500 BB02      OUT	0x12,R16
(0141) 	 ClrLcdWR;
    2501 98DD      CBI	0x1B,5
(0142) //	 asm("nop");
(0143) 	 SetLcdWR;
    2502 9ADD      SBI	0x1B,5
(0144) 
(0145) 	 SetLcdCS;
    2503 9AD8      SBI	0x1B,0
    2504 9508      RET
_LCD_WR_REG:
  dataL                --> R20
  dataH                --> R22
  data16               --> R18
  reg                  --> R16
    2505 940E2637  CALL	push_gset2
(0146) 	
(0147) }
(0148) void LCD_WR_REG(unsigned char reg,unsigned int data16)
(0149) {
(0150)      unsigned char dataH,dataL;
(0151)      dataH=data16/256;
    2507 01B9      MOVW	R22,R18
    2508 2F67      MOV	R22,R23
    2509 2777      CLR	R23
(0152)      dataL=data16&0xff;
    250A 2F42      MOV	R20,R18
    250B 7050      ANDI	R21,0
(0153)      ClrLcdRS;
    250C 98DA      CBI	0x1B,2
(0154)      ClrLcdCS;
    250D 98D8      CBI	0x1B,0
(0155) 
(0156) 
(0157)      lcd_data=0;
    250E 2422      CLR	R2
    250F BA22      OUT	0x12,R2
(0158)      ClrLcdWR;
    2510 98DD      CBI	0x1B,5
(0159)      //asm("nop");
(0160)      SetLcdWR;
    2511 9ADD      SBI	0x1B,5
(0161) 
(0162) 	 lcd_data=reg;
    2512 BB02      OUT	0x12,R16
(0163) 	 ClrLcdWR;
    2513 98DD      CBI	0x1B,5
(0164) //	 asm("nop");
(0165) 	 SetLcdWR;
    2514 9ADD      SBI	0x1B,5
(0166)      SetLcdRS;	
    2515 9ADA      SBI	0x1B,2
(0167) 	 lcd_data=dataH;
    2516 BB62      OUT	0x12,R22
(0168) 	 ClrLcdWR;
    2517 98DD      CBI	0x1B,5
(0169) //	 asm("nop");
(0170) 	 SetLcdWR;
    2518 9ADD      SBI	0x1B,5
(0171) 	 lcd_data=dataL;
    2519 BB42      OUT	0x12,R20
(0172) 	 ClrLcdWR;
    251A 98DD      CBI	0x1B,5
(0173) //	 asm("nop");
(0174) 	 SetLcdWR;
    251B 9ADD      SBI	0x1B,5
(0175) 
(0176) 
(0177) 
(0178) 	 SetLcdCS;
    251C 9AD8      SBI	0x1B,0
    251D 940E262E  CALL	pop_gset2
    251F 9508      RET
(0179) 
(0180) }
(0181) 
(0182) 
(0183) void LCD_Init()
(0184) {
(0185) 
(0186) 	 LCD_WR_REG(0x00,0x0001);
_LCD_Init:
    2520 E021      LDI	R18,1
    2521 E030      LDI	R19,0
    2522 2700      CLR	R16
    2523 DFE1      RCALL	_LCD_WR_REG
(0187) 	 LCD_WR_REG(0x12,0x0109);  
    2524 E029      LDI	R18,0x9
    2525 E031      LDI	R19,1
    2526 E102      LDI	R16,0x12
    2527 DFDD      RCALL	_LCD_WR_REG
(0188) 	 LCD_WR_REG(0x13,0x0e1d);
    2528 E12D      LDI	R18,0x1D
    2529 E03E      LDI	R19,0xE
    252A E103      LDI	R16,0x13
    252B DFD9      RCALL	_LCD_WR_REG
(0189) 	 LCD_WR_REG(0x14,0x6224);
    252C E224      LDI	R18,0x24
    252D E632      LDI	R19,0x62
    252E E104      LDI	R16,0x14
    252F DFD5      RCALL	_LCD_WR_REG
(0190) 	 LCD_WR_REG(0x10,0x2004);
    2530 E024      LDI	R18,4
    2531 E230      LDI	R19,0x20
    2532 E100      LDI	R16,0x10
    2533 DFD1      RCALL	_LCD_WR_REG
(0191) 	 Delay_nms(50);
    2534 E302      LDI	R16,0x32
    2535 E010      LDI	R17,0
    2536 DFA3      RCALL	_Delay_nms
(0192) 	 LCD_WR_REG(0x13,0x0e5d);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -