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

📄 n8bit.s

📁 128X128的TFT并口驱动测试程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module n8bit.c
	.area text(rom, con, rel)
	.dbfile D:\taobao\src\n8bit.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 50
; //ICC-AVR application builder : 2008-11-2 11:21:49
; // Target : M32
; // Crystal: 8.0000Mhz
; /******************************************************************************
; Copyright 2008 海景电子
; All rights reserved.
; 
; 1.6寸彩屏AVR DEMO
; 
; 版本:1.0.0
; Auther:康锦海
; 完成日期:2008.12.14
; 主频:8.000M
; 液晶型号:  128X128 26万色      驱动芯片:三星S6D0117
; 淘宝长期供货:http://shop36350482.taobao.com/
; 
; 技术支持:
; 康锦海    手机:  13316518267(接听免费)
;             QQ:   546829846
;          email:luckroll@yahoo.com.cn
; 
; ******************************************************************************/
; #include <iom32v.h>
; #include <macros.h>
; 
; //Signal bit definitions
; 
; 
; 
; 
; #define  lcd_data   PORTD
; #define	 lcd_cs	    0
; #define	 lcd_rst	1
; #define	 lcd_rs	    2
; #define  lcd_rd     3
; #define  lcd_led    4
; #define	 lcd_wr 	5
; #define  SetLcdRS   PORTA|=(1<<lcd_rs);
; #define  ClrLcdRS   PORTA&=~(1<<lcd_rs);
; #define  SetLcdWR   PORTA |=(1<<lcd_wr);
; #define  ClrLcdWR   PORTA &=~(1<<lcd_wr);
; #define  Setled     PORTA|=(1<<lcd_led);
; #define  Clrled     PORTA&=~(1<<lcd_led);
; #define  SetLcdRST  PORTA|=(1<<lcd_rst);
; #define  ClrLcdRST  PORTA&=~(1<<lcd_rst);
; #define  SetLcdCS   PORTA|=(1<<lcd_cs);
; #define  ClrLcdCS   PORTA&=~(1<<lcd_cs);
; const unsigned char AVR_LOGO[18624];
; void port_init(void)
; {
	.dbline 51
;      PORTA = 0x2F;
	ldi R24,47
	out 0x1b,R24
	.dbline 52
;      DDRA  = 0xFF;
	ldi R24,255
	out 0x1a,R24
	.dbline 53
;      PORTB = 0x00;
	clr R2
	out 0x18,R2
	.dbline 54
;      DDRB  = 0x00;
	out 0x17,R2
	.dbline 55
;      PORTC = 0x00; 
	out 0x15,R2
	.dbline 56
;      DDRC  = 0x00;
	out 0x14,R2
	.dbline 57
;      PORTD = 0xff;
	out 0x12,R24
	.dbline 58
;      DDRD  = 0xff;
	out 0x11,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
	.even
_init_devices::
	.dbline -1
	.dbline 63
; }
; 
; //call this routine to initialize all peripherals
; void init_devices(void)
; {
	.dbline 64
;      CLI(); //disable all interrupts
	cli
	.dbline 65
;      port_init();
	xcall _port_init
	.dbline 67
; 
;      MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 68
;      GICR  = 0x00;
	out 0x3b,R2
	.dbline 69
;      TIMSK = 0x00; //timer interrupt sources
	out 0x39,R2
	.dbline 70
;      SEI(); //re-enable interrupts
	sei
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Delay_1us _Delay_1us fV
	.even
_Delay_1us::
	.dbline -1
	.dbline 74
;      //all peripherals are now initialized
; }
; void Delay_1us(void)//1us延时函数
; {
	.dbline 75
;      asm("nop");
	nop
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Delay_nus _Delay_nus fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_Delay_nus::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 78
; }
; void Delay_nus(unsigned int n)//N us延时函数
; {
	.dbline 79
;      unsigned int i=0;
	clr R20
	clr R21
	.dbline 80
;      for (i=0;i<n;i++)
	xjmp L8
L5:
	.dbline 81
	xcall _Delay_1us
L6:
	.dbline 80
	subi R20,255  ; offset = 1
	sbci R21,255
L8:
	.dbline 80
	cp R20,R22
	cpc R21,R23
	brlo L5
	.dbline -2
L4:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e Delay_1ms _Delay_1ms fV
;              i -> R16,R17
	.even
_Delay_1ms::
	.dbline -1
	.dbline 84
;      Delay_1us();
; }
; void Delay_1ms(void)//1ms延时函数
; {
	.dbline 86
	clr R16
	clr R17
	xjmp L13
L10:
	.dbline 86
L11:
	.dbline 86
	subi R16,255  ; offset = 1
	sbci R17,255
L13:
	.dbline 86
;      unsigned int i;
;      for (i=0;i<1140;i++);
	cpi R16,116
	ldi R30,4
	cpc R17,R30
	brlo L10
	.dbline -2
L9:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e Delay_nms _Delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_Delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 89
; }
; void Delay_nms(unsigned int n)//N ms延时函数
; {
	.dbline 90
;      unsigned int i=0;
	clr R20
	clr R21
	.dbline 91
;      for (i=0;i<n;i++)
	xjmp L18
L15:
	.dbline 92
	xcall _Delay_1ms
L16:
	.dbline 91
	subi R20,255  ; offset = 1
	sbci R21,255
L18:
	.dbline 91
	cp R20,R22
	cpc R21,R23
	brlo L15
	.dbline -2
L14:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e write_data _write_data fV
;           data -> R16
	.even
_write_data::
	.dbline -1
	.dbline 96
;      Delay_1ms();
; }
; 
; void write_data(unsigned char data)
; {
	.dbline 99
; 
; 
; 	 SetLcdRS;
	sbi 0x1b,2
	.dbline 99
	.dbline 100
; 	 ClrLcdCS;
	cbi 0x1b,0
	.dbline 100
	.dbline 102
; 
; 	 lcd_data=data;
	out 0x12,R16
	.dbline 103
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 103
	.dbline 105
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 105
	.dbline 110
; 
; 	
; 	
; 	
; 	 SetLcdCS;
	sbi 0x1b,0
	.dbline 110
	.dbline -2
L19:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e write_data16 _write_data16 fV
;          dataL -> R18
;          dataH -> R16
	.even
_write_data16::
	.dbline -1
	.dbline 114
; 
; }
; void write_data16(unsigned char dataH,unsigned char dataL)
; {
	.dbline 117
; 	
; 
; 	 SetLcdRS;
	sbi 0x1b,2
	.dbline 117
	.dbline 118
; 	 ClrLcdCS;
	cbi 0x1b,0
	.dbline 118
	.dbline 119
; 	 lcd_data=dataH;
	out 0x12,R16
	.dbline 120
;      ClrLcdWR;
	cbi 0x1b,5
	.dbline 120
	.dbline 122
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 122
	.dbline 123
; 	 lcd_data=dataL;
	out 0x12,R18
	.dbline 124
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 124
	.dbline 126
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 126
	.dbline 128
; 				
; 	 SetLcdCS;
	sbi 0x1b,0
	.dbline 128
	.dbline -2
L20:
	.dbline 0 ; func end
	ret
	.dbsym r dataL 18 c
	.dbsym r dataH 16 c
	.dbend
	.dbfunc e write_cmd _write_cmd fV
;           data -> R16
	.even
_write_cmd::
	.dbline -1
	.dbline 131
; }
; void write_cmd(unsigned char data)
; {
	.dbline 132
; 	 ClrLcdRS;
	cbi 0x1b,2
	.dbline 132
	.dbline 133
; 	 ClrLcdCS;
	cbi 0x1b,0
	.dbline 133
	.dbline 135
; 	
; 	 lcd_data=0;
	clr R2
	out 0x12,R2
	.dbline 136
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 136
	.dbline 138
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 138
	.dbline 140
; 
; 	 lcd_data=data;
	out 0x12,R16
	.dbline 141
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 141
	.dbline 143
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 143
	.dbline 145
; 
; 	 SetLcdCS;
	sbi 0x1b,0
	.dbline 145
	.dbline -2
L21:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e LCD_WR_REG _LCD_WR_REG fV
;          dataL -> R20
;          dataH -> R22
;         data16 -> R18,R19
;            reg -> R16
	.even
_LCD_WR_REG::
	xcall push_gset2
	.dbline -1
	.dbline 149
; 	
; }
; void LCD_WR_REG(unsigned char reg,unsigned int data16)
; {
	.dbline 151
;      unsigned char dataH,dataL;
;      dataH=data16/256;
	movw R22,R18
	mov R22,R23
	clr R23
	.dbline 152
;      dataL=data16&0xff;
	mov R20,R18
	andi R21,0
	.dbline 153
;      ClrLcdRS;
	cbi 0x1b,2
	.dbline 153
	.dbline 154
;      ClrLcdCS;
	cbi 0x1b,0
	.dbline 154
	.dbline 157
; 
; 
;      lcd_data=0;
	clr R2
	out 0x12,R2
	.dbline 158
;      ClrLcdWR;
	cbi 0x1b,5
	.dbline 158
	.dbline 160
;      //asm("nop");
;      SetLcdWR;
	sbi 0x1b,5
	.dbline 160
	.dbline 162
; 
; 	 lcd_data=reg;
	out 0x12,R16
	.dbline 163
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 163
	.dbline 165
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 165
	.dbline 166
;      SetLcdRS;	
	sbi 0x1b,2
	.dbline 166
	.dbline 167
; 	 lcd_data=dataH;
	out 0x12,R22
	.dbline 168
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 168
	.dbline 170
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 170
	.dbline 171
; 	 lcd_data=dataL;
	out 0x12,R20
	.dbline 172
; 	 ClrLcdWR;
	cbi 0x1b,5
	.dbline 172
	.dbline 174
; //	 asm("nop");
; 	 SetLcdWR;
	sbi 0x1b,5
	.dbline 174
	.dbline 178
; 
; 
; 
; 	 SetLcdCS;
	sbi 0x1b,0
	.dbline 178
	.dbline -2
L22:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r dataL 20 c
	.dbsym r dataH 22 c
	.dbsym r data16 18 i
	.dbsym r reg 16 c
	.dbend
	.dbfunc e LCD_Init _LCD_Init fV
	.even
_LCD_Init::
	.dbline -1
	.dbline 184
; 
; }
; 
; 
; void LCD_Init()
; {
	.dbline 186
; 
; 	 LCD_WR_REG(0x00,0x0001);
	ldi R18,1
	ldi R19,0
	clr R16
	xcall _LCD_WR_REG
	.dbline 187
; 	 LCD_WR_REG(0x12,0x0109);  
	ldi R18,265
	ldi R19,1
	ldi R16,18
	xcall _LCD_WR_REG
	.dbline 188
; 	 LCD_WR_REG(0x13,0x0e1d);
	ldi R18,3613
	ldi R19,14
	ldi R16,19
	xcall _LCD_WR_REG
	.dbline 189
; 	 LCD_WR_REG(0x14,0x6224);
	ldi R18,25124
	ldi R19,98
	ldi R16,20
	xcall _LCD_WR_REG
	.dbline 190
; 	 LCD_WR_REG(0x10,0x2004);
	ldi R18,8196
	ldi R19,32
	ldi R16,16
	xcall _LCD_WR_REG
	.dbline 191
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 192
; 	 LCD_WR_REG(0x13,0x0e5d);
	ldi R18,3677
	ldi R19,14
	ldi R16,19
	xcall _LCD_WR_REG
	.dbline 193
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 194
; 	 LCD_WR_REG(0x01,0x010f);
	ldi R18,271
	ldi R19,1
	ldi R16,1
	xcall _LCD_WR_REG
	.dbline 195
; 	 LCD_WR_REG(0x02,0x0700);
	ldi R18,1792
	ldi R19,7
	ldi R16,2
	xcall _LCD_WR_REG
	.dbline 196
; 	 LCD_WR_REG(0x03,0x1030);
	ldi R18,4144
	ldi R19,16
	ldi R16,3
	xcall _LCD_WR_REG
	.dbline 197
; 	 LCD_WR_REG(0x07,0x0000);
	clr R18
	clr R19
	ldi R16,7
	xcall _LCD_WR_REG
	.dbline 198
; 	 LCD_WR_REG(0x08,0x0202);
	ldi R18,514
	ldi R19,2
	ldi R16,8
	xcall _LCD_WR_REG
	.dbline 199
; 	 LCD_WR_REG(0x0b,0x0001);
	ldi R18,1
	ldi R19,0
	ldi R16,11
	xcall _LCD_WR_REG
	.dbline 200
; 	 LCD_WR_REG(0x0c,0x0000);
	clr R18
	clr R19
	ldi R16,12
	xcall _LCD_WR_REG
	.dbline 201
; 	 LCD_WR_REG(0x40,0x0000);
	clr R18
	clr R19
	ldi R16,64
	xcall _LCD_WR_REG
	.dbline 202
; 	 LCD_WR_REG(0x42,0x8300);	
	ldi R18,33536
	ldi R19,131
	ldi R16,66
	xcall _LCD_WR_REG
	.dbline 203
; 	 LCD_WR_REG(0x43,0x0000);
	clr R18
	clr R19
	ldi R16,67
	xcall _LCD_WR_REG
	.dbline 204
; 	 LCD_WR_REG(0x44,0x8304);
	ldi R18,33540
	ldi R19,131
	ldi R16,68
	xcall _LCD_WR_REG
	.dbline 205
; 	 LCD_WR_REG(0x45,0x7f00);
	ldi R18,32512
	ldi R19,127
	ldi R16,69
	xcall _LCD_WR_REG
	.dbline 206
; 	 LCD_WR_REG(0x25,0x0002);
	ldi R18,2
	ldi R19,0
	ldi R16,37
	xcall _LCD_WR_REG
	.dbline 207
; 	 LCD_WR_REG(0x26,0x0002);
	ldi R18,2
	ldi R19,0
	ldi R16,38
	xcall _LCD_WR_REG
	.dbline 208
; 	 LCD_WR_REG(0x30,0x0000);
	clr R18
	clr R19
	ldi R16,48
	xcall _LCD_WR_REG
	.dbline 209
; 	 LCD_WR_REG(0x31,0x0102);
	ldi R18,258
	ldi R19,1
	ldi R16,49
	xcall _LCD_WR_REG
	.dbline 210
; 	 LCD_WR_REG(0x32,0x0001);
	ldi R18,1
	ldi R19,0
	ldi R16,50
	xcall _LCD_WR_REG
	.dbline 211
; 	 LCD_WR_REG(0x33,0x0202);	
	ldi R18,514
	ldi R19,2
	ldi R16,51
	xcall _LCD_WR_REG
	.dbline 212
; 	 LCD_WR_REG(0x34,0x0707);
	ldi R18,1799
	ldi R19,7
	ldi R16,52
	xcall _LCD_WR_REG
	.dbline 213
; 	 LCD_WR_REG(0x35,0x0707);
	ldi R18,1799
	ldi R19,7
	ldi R16,53
	xcall _LCD_WR_REG
	.dbline 214
; 	 LCD_WR_REG(0x36,0x0707);
	ldi R18,1799
	ldi R19,7
	ldi R16,54
	xcall _LCD_WR_REG
	.dbline 215
; 	 LCD_WR_REG(0x37,0x0202);
	ldi R18,514
	ldi R19,2
	ldi R16,55
	xcall _LCD_WR_REG
	.dbline 216
; 	 LCD_WR_REG(0x07,0x0005);
	ldi R18,5
	ldi R19,0
	ldi R16,7
	xcall _LCD_WR_REG
	.dbline 217
; 	 Delay_nms(50);		
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 218
; 	 LCD_WR_REG(0x07,0x0015);
	ldi R18,21
	ldi R19,0
	ldi R16,7
	xcall _LCD_WR_REG
	.dbline 219
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 220
; 	 LCD_WR_REG(0x21,0x0004);
	ldi R18,4
	ldi R19,0
	ldi R16,33
	xcall _LCD_WR_REG
	.dbline 221
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 224
; 	
; 	
; 	 LCD_WR_REG(0x21,0x0004);
	ldi R18,4
	ldi R19,0
	ldi R16,33
	xcall _LCD_WR_REG
	.dbline 225
; 	 LCD_WR_REG(0x44,0x8304);
	ldi R18,33540
	ldi R19,131
	ldi R16,68
	xcall _LCD_WR_REG
	.dbline 226
; 	 LCD_WR_REG(0x45,0x7f00);
	ldi R18,32512
	ldi R19,127
	ldi R16,69
	xcall _LCD_WR_REG
	.dbline 227
; 	 write_cmd(0x22);
	ldi R16,34
	xcall _write_cmd
	.dbline 230
; 	
; 	
; 	 LCD_WR_REG(0x10,0x0000);
	clr R18
	clr R19
	ldi R16,16
	xcall _LCD_WR_REG
	.dbline 231
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 232
; 	 LCD_WR_REG(0x03,0x1030);
	ldi R18,4144
	ldi R19,16
	ldi R16,3
	xcall _LCD_WR_REG
	.dbline 233
; 	 Delay_nms(50);	
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 234
; 	 LCD_WR_REG(0x10,0x2004);
	ldi R18,8196
	ldi R19,32
	ldi R16,16
	xcall _LCD_WR_REG
	.dbline 235
; 	 Delay_nms(50);
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 236
; 	 LCD_WR_REG(0x13,0x0e5d);
	ldi R18,3677
	ldi R19,14
	ldi R16,19
	xcall _LCD_WR_REG
	.dbline 237
; 	 Delay_nms(50);	
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 238
; 	 LCD_WR_REG(0x07,0x0017);
	ldi R18,23
	ldi R19,0
	ldi R16,7
	xcall _LCD_WR_REG
	.dbline 239
; 	 Delay_nms(50);	
	ldi R16,50
	ldi R17,0
	xcall _Delay_nms
	.dbline 240
; 	 write_cmd(0x22);
	ldi R16,34
	xcall _write_cmd
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              j -> <dead>
;              i -> R20,R21
	.even
_main::
	.dbline -1
	.dbline 250
; 	
; 	
; }
; 
; 
; 
; 
; //
; void main(void)
; {
	.dbline 252
;      unsigned int i,j;
;      init_devices();
	xcall _init_devices
	.dbline 253
;      Clrled;

⌨️ 快捷键说明

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