📄 n8bit.lis
字号:
.module n8bit.c
.area text(rom, con, rel)
0000 .dbfile D:\taobao\src\n8bit.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 50
0000 ; //ICC-AVR application builder : 2008-11-2 11:21:49
0000 ; // Target : M32
0000 ; // Crystal: 8.0000Mhz
0000 ; /******************************************************************************
0000 ; Copyright 2008 海景电子
0000 ; All rights reserved.
0000 ;
0000 ; 1.6寸彩屏AVR DEMO
0000 ;
0000 ; 版本:1.0.0
0000 ; Auther:康锦海
0000 ; 完成日期:2008.12.14
0000 ; 主频:8.000M
0000 ; 液晶型号: 128X128 26万色 驱动芯片:三星S6D0117
0000 ; 淘宝长期供货:http://shop36350482.taobao.com/
0000 ;
0000 ; 技术支持:
0000 ; 康锦海 手机: 13316518267(接听免费)
0000 ; QQ: 546829846
0000 ; email:luckroll@yahoo.com.cn
0000 ;
0000 ; ******************************************************************************/
0000 ; #include <iom32v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; //Signal bit definitions
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; #define lcd_data PORTD
0000 ; #define lcd_cs 0
0000 ; #define lcd_rst 1
0000 ; #define lcd_rs 2
0000 ; #define lcd_rd 3
0000 ; #define lcd_led 4
0000 ; #define lcd_wr 5
0000 ; #define SetLcdRS PORTA|=(1<<lcd_rs);
0000 ; #define ClrLcdRS PORTA&=~(1<<lcd_rs);
0000 ; #define SetLcdWR PORTA |=(1<<lcd_wr);
0000 ; #define ClrLcdWR PORTA &=~(1<<lcd_wr);
0000 ; #define Setled PORTA|=(1<<lcd_led);
0000 ; #define Clrled PORTA&=~(1<<lcd_led);
0000 ; #define SetLcdRST PORTA|=(1<<lcd_rst);
0000 ; #define ClrLcdRST PORTA&=~(1<<lcd_rst);
0000 ; #define SetLcdCS PORTA|=(1<<lcd_cs);
0000 ; #define ClrLcdCS PORTA&=~(1<<lcd_cs);
0000 ; const unsigned char AVR_LOGO[18624];
0000 ; void port_init(void)
0000 ; {
0000 .dbline 51
0000 ; PORTA = 0x2F;
0000 8FE2 ldi R24,47
0002 8BBB out 0x1b,R24
0004 .dbline 52
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 53
0008 ; PORTB = 0x00;
0008 2224 clr R2
000A 28BA out 0x18,R2
000C .dbline 54
000C ; DDRB = 0x00;
000C 27BA out 0x17,R2
000E .dbline 55
000E ; PORTC = 0x00;
000E 25BA out 0x15,R2
0010 .dbline 56
0010 ; DDRC = 0x00;
0010 24BA out 0x14,R2
0012 .dbline 57
0012 ; PORTD = 0xff;
0012 82BB out 0x12,R24
0014 .dbline 58
0014 ; DDRD = 0xff;
0014 81BB out 0x11,R24
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e init_devices _init_devices fV
.even
0018 _init_devices::
0018 .dbline -1
0018 .dbline 63
0018 ; }
0018 ;
0018 ; //call this routine to initialize all peripherals
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 64
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 65
001A ; port_init();
001A F2DF xcall _port_init
001C .dbline 67
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 68
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 69
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 70
0024 ; SEI(); //re-enable interrupts
0024 7894 sei
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e Delay_1us _Delay_1us fV
.even
0028 _Delay_1us::
0028 .dbline -1
0028 .dbline 74
0028 ; //all peripherals are now initialized
0028 ; }
0028 ; void Delay_1us(void)//1us延时函数
0028 ; {
0028 .dbline 75
0028 ; asm("nop");
0028 0000 nop
002A .dbline -2
002A L3:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
002C .dbfunc e Delay_nus _Delay_nus fV
002C ; i -> R20,R21
002C ; n -> R22,R23
.even
002C _Delay_nus::
002C 0E940000 xcall push_gset2
0030 B801 movw R22,R16
0032 .dbline -1
0032 .dbline 78
0032 ; }
0032 ; void Delay_nus(unsigned int n)//N us延时函数
0032 ; {
0032 .dbline 79
0032 ; unsigned int i=0;
0032 4427 clr R20
0034 5527 clr R21
0036 .dbline 80
0036 ; for (i=0;i<n;i++)
0036 03C0 xjmp L8
0038 L5:
0038 .dbline 81
0038 F7DF xcall _Delay_1us
003A L6:
003A .dbline 80
003A 4F5F subi R20,255 ; offset = 1
003C 5F4F sbci R21,255
003E L8:
003E .dbline 80
003E 4617 cp R20,R22
0040 5707 cpc R21,R23
0042 D0F3 brlo L5
0044 .dbline -2
0044 L4:
0044 0E940000 xcall pop_gset2
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbsym r i 20 i
004A .dbsym r n 22 i
004A .dbend
004A .dbfunc e Delay_1ms _Delay_1ms fV
004A ; i -> R16,R17
.even
004A _Delay_1ms::
004A .dbline -1
004A .dbline 84
004A ; Delay_1us();
004A ; }
004A ; void Delay_1ms(void)//1ms延时函数
004A ; {
004A .dbline 86
004A 0027 clr R16
004C 1127 clr R17
004E 02C0 xjmp L13
0050 L10:
0050 .dbline 86
0050 L11:
0050 .dbline 86
0050 0F5F subi R16,255 ; offset = 1
0052 1F4F sbci R17,255
0054 L13:
0054 .dbline 86
0054 ; unsigned int i;
0054 ; for (i=0;i<1140;i++);
0054 0437 cpi R16,116
0056 E4E0 ldi R30,4
0058 1E07 cpc R17,R30
005A D0F3 brlo L10
005C .dbline -2
005C L9:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r i 16 i
005E .dbend
005E .dbfunc e Delay_nms _Delay_nms fV
005E ; i -> R20,R21
005E ; n -> R22,R23
.even
005E _Delay_nms::
005E 0E940000 xcall push_gset2
0062 B801 movw R22,R16
0064 .dbline -1
0064 .dbline 89
0064 ; }
0064 ; void Delay_nms(unsigned int n)//N ms延时函数
0064 ; {
0064 .dbline 90
0064 ; unsigned int i=0;
0064 4427 clr R20
0066 5527 clr R21
0068 .dbline 91
0068 ; for (i=0;i<n;i++)
0068 03C0 xjmp L18
006A L15:
006A .dbline 92
006A EFDF xcall _Delay_1ms
006C L16:
006C .dbline 91
006C 4F5F subi R20,255 ; offset = 1
006E 5F4F sbci R21,255
0070 L18:
0070 .dbline 91
0070 4617 cp R20,R22
0072 5707 cpc R21,R23
0074 D0F3 brlo L15
0076 .dbline -2
0076 L14:
0076 0E940000 xcall pop_gset2
007A .dbline 0 ; func end
007A 0895 ret
007C .dbsym r i 20 i
007C .dbsym r n 22 i
007C .dbend
007C .dbfunc e write_data _write_data fV
007C ; data -> R16
.even
007C _write_data::
007C .dbline -1
007C .dbline 96
007C ; Delay_1ms();
007C ; }
007C ;
007C ; void write_data(unsigned char data)
007C ; {
007C .dbline 99
007C ;
007C ;
007C ; SetLcdRS;
007C DA9A sbi 0x1b,2
007E .dbline 99
007E .dbline 100
007E ; ClrLcdCS;
007E D898 cbi 0x1b,0
0080 .dbline 100
0080 .dbline 102
0080 ;
0080 ; lcd_data=data;
0080 02BB out 0x12,R16
0082 .dbline 103
0082 ; ClrLcdWR;
0082 DD98 cbi 0x1b,5
0084 .dbline 103
0084 .dbline 105
0084 ; // asm("nop");
0084 ; SetLcdWR;
0084 DD9A sbi 0x1b,5
0086 .dbline 105
0086 .dbline 110
0086 ;
0086 ;
0086 ;
0086 ;
0086 ; SetLcdCS;
0086 D89A sbi 0x1b,0
0088 .dbline 110
0088 .dbline -2
0088 L19:
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r data 16 c
008A .dbend
008A .dbfunc e write_data16 _write_data16 fV
008A ; dataL -> R18
008A ; dataH -> R16
.even
008A _write_data16::
008A .dbline -1
008A .dbline 114
008A ;
008A ; }
008A ; void write_data16(unsigned char dataH,unsigned char dataL)
008A ; {
008A .dbline 117
008A ;
008A ;
008A ; SetLcdRS;
008A DA9A sbi 0x1b,2
008C .dbline 117
008C .dbline 118
008C ; ClrLcdCS;
008C D898 cbi 0x1b,0
008E .dbline 118
008E .dbline 119
008E ; lcd_data=dataH;
008E 02BB out 0x12,R16
0090 .dbline 120
0090 ; ClrLcdWR;
0090 DD98 cbi 0x1b,5
0092 .dbline 120
0092 .dbline 122
0092 ; // asm("nop");
0092 ; SetLcdWR;
0092 DD9A sbi 0x1b,5
0094 .dbline 122
0094 .dbline 123
0094 ; lcd_data=dataL;
0094 22BB out 0x12,R18
0096 .dbline 124
0096 ; ClrLcdWR;
0096 DD98 cbi 0x1b,5
0098 .dbline 124
0098 .dbline 126
0098 ; // asm("nop");
0098 ; SetLcdWR;
0098 DD9A sbi 0x1b,5
009A .dbline 126
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -