📄 n8bit.s
字号:
.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 + -