📄 ledtest.lis
字号:
.module ledtest.c
.area data(ram, con, rel)
0000 _I_Timer::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\ICC128\2008控制台\2008console0TEST\U盘扇区读写\ledtest.c
0002 .dbsym e I_Timer _I_Timer I
.area text(rom, con, rel)
0000 .dbfile E:\ICC128\2008控制台\2008console0TEST\U盘扇区读写\ledtest.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 14
0000 ;
0000 ; //ICC-AVR application builder : 2008-1-23 9:13:29
0000 ; // Target : M128
0000 ; // Crystal: 8.0000Mhz
0000 ; //#include <iom128v.h>
0000 ; //#include <macros.h>
0000 ; #include "2008.h"
0000 ;
0000 ; int I_Timer=0;
0000 ;
0000 ; //#define portout (*(volatile unsigned char*)0x1100)
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 15
0000 ; PORTA = 0XFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 16
0004 ; DDRA = 0XFF;
0004 8ABB out 0x1a,R24
0006 .dbline 17
0006 ; PORTF = 0XFF;
0006 80936200 sts 98,R24
000A .dbline 18
000A ; DDRF = 0XFF;
000A 80936100 sts 97,R24
000E .dbline 19
000E ; PORTB = 0xFF;
000E 88BB out 0x18,R24
0010 .dbline 20
0010 ; DDRB = 0xF7;
0010 87EF ldi R24,247
0012 87BB out 0x17,R24
0014 .dbline 21
0014 ; PORTD = 0xFF;
0014 8FEF ldi R24,255
0016 82BB out 0x12,R24
0018 .dbline 22
0018 ; DDRD = 0xE3;
0018 83EE ldi R24,227
001A 81BB out 0x11,R24
001C .dbline 23
001C ; PORTE = 0xFF;
001C 8FEF ldi R24,255
001E 83B9 out 0x3,R24
0020 .dbline 24
0020 ; DDRE = 0xFF;
0020 82B9 out 0x2,R24
0022 .dbline 25
0022 ; PORTG = 0XFF;
0022 80936500 sts 101,R24
0026 .dbline 26
0026 ; DDRG = 0Xf7;
0026 87EF ldi R24,247
0028 80936400 sts 100,R24
002C .dbline -2
002C L1:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e timer0_init _timer0_init fV
.even
002E _timer0_init::
002E .dbline -1
002E .dbline 34
002E ; }
002E ;
002E ; //TIMER0 initialize - prescale:1024
002E ; // WGM: Normal
002E ; // desired value: 20mSec
002E ; // actual value: 19.968mSec (0.2%)
002E ; void timer0_init(void)
002E ; {
002E .dbline 35
002E ; TCCR0 = 0x00; //stop
002E 2224 clr R2
0030 23BE out 0x33,R2
0032 .dbline 36
0032 ; ASSR = 0x00; //set async mode
0032 20BE out 0x30,R2
0034 .dbline 37
0034 ; TCNT0 = 0x64; //set count
0034 84E6 ldi R24,100
0036 82BF out 0x32,R24
0038 .dbline 38
0038 ; OCR0 = 0x9C;
0038 8CE9 ldi R24,156
003A 81BF out 0x31,R24
003C .dbline 39
003C ; TCCR0 = 0x07; //start timer
003C 87E0 ldi R24,7
003E 83BF out 0x33,R24
0040 .dbline -2
0040 L2:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbend
.area vector(rom, abs)
.org 64
0040 0C942100 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0042 .dbfile E:\ICC128\2008控制台\2008console0TEST\U盘扇区读写\ledtest.c
0042 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0042 _timer0_ovf_isr::
0042 2A92 st -y,R2
0044 3A92 st -y,R3
0046 8A93 st -y,R24
0048 9A93 st -y,R25
004A EA93 st -y,R30
004C 2FB6 in R2,0x3f
004E 2A92 st -y,R2
0050 .dbline -1
0050 .dbline 44
0050 ; }
0050 ;
0050 ; #pragma interrupt_handler timer0_ovf_isr:17
0050 ; void timer0_ovf_isr(void)
0050 ; {
0050 .dbline 45
0050 ; I_Timer++;
0050 80910000 lds R24,_I_Timer
0054 90910100 lds R25,_I_Timer+1
0058 0196 adiw R24,1
005A 90930100 sts _I_Timer+1,R25
005E 80930000 sts _I_Timer,R24
0062 .dbline 46
0062 ; if(I_Timer == 50)
0062 8233 cpi R24,50
0064 E0E0 ldi R30,0
0066 9E07 cpc R25,R30
0068 61F4 brne L4
006A .dbline 47
006A ; {
006A .dbline 48
006A ; PORTG ^= 0x10;
006A 80E1 ldi R24,16
006C 20906500 lds R2,101
0070 2826 eor R2,R24
0072 20926500 sts 101,R2
0076 .dbline 49
0076 ; I_Timer =0;
0076 2224 clr R2
0078 3324 clr R3
007A 30920100 sts _I_Timer+1,R3
007E 20920000 sts _I_Timer,R2
0082 .dbline 50
0082 ; }
0082 L4:
0082 .dbline 51
0082 ; TCNT0 = 0x64; //reload counter value
0082 84E6 ldi R24,100
0084 82BF out 0x32,R24
0086 .dbline -2
0086 L3:
0086 2990 ld R2,y+
0088 2FBE out 0x3f,R2
008A E991 ld R30,y+
008C 9991 ld R25,y+
008E 8991 ld R24,y+
0090 3990 ld R3,y+
0092 2990 ld R2,y+
0094 .dbline 0 ; func end
0094 1895 reti
0096 .dbend
0096 .dbfunc e init_devices _init_devices fV
.even
0096 _init_devices::
0096 .dbline -1
0096 .dbline 56
0096 ; }
0096 ;
0096 ; //call this routine to initialize all peripherals
0096 ; void init_devices(void)
0096 ; {
0096 .dbline 58
0096 ; //stop errant interrupts until set up
0096 ; CLI(); //disable all interrupts
0096 F894 cli
0098 .dbline 59
0098 ; XDIV = 0x00; //xtal divider
0098 2224 clr R2
009A 2CBE out 0x3c,R2
009C .dbline 60
009C ; XMCRA = 0x00; //external memory
009C 20926D00 sts 109,R2
00A0 .dbline 61
00A0 ; port_init();
00A0 AFDF xcall _port_init
00A2 .dbline 63
00A2 ; //timer0_init();
00A2 ; MCUCR = 0x00;
00A2 2224 clr R2
00A4 25BE out 0x35,R2
00A6 .dbline 64
00A6 ; EICRA = 0x00; //extended ext ints
00A6 20926A00 sts 106,R2
00AA .dbline 65
00AA ; EICRB = 0x00; //extended ext ints
00AA 2ABE out 0x3a,R2
00AC .dbline 66
00AC ; EIMSK = 0x00;
00AC 29BE out 0x39,R2
00AE .dbline 68
00AE ; //TIMSK = 0x01; //timer interrupt sources
00AE ; ETIMSK = 0x00; //extended timer interrupt sources
00AE 20927D00 sts 125,R2
00B2 .dbline 69
00B2 ; SEI(); //re-enable interrupts
00B2 7894 sei
00B4 .dbline -2
00B4 L6:
00B4 .dbline 0 ; func end
00B4 0895 ret
00B6 .dbend
00B6 .dbfunc e initLCDM _initLCDM fV
.even
00B6 _initLCDM::
00B6 .dbline -1
00B6 .dbline 93
00B6 ; //all peripherals are now initialized
00B6 ; }
00B6 ; /*void main()
00B6 ; {
00B6 ; int i;
00B6 ; unsigned char readXDIV;
00B6 ;
00B6 ; init_devices();
00B6 ; initLCDM(); //初始化LCD
00B6 ; Welcome_interface(); //显示欢迎界面
00B6 ; for ( i=1; i<=48;i++)
00B6 ; {
00B6 ; PORTG &= 0x04;
00B6 ; PORTG ^= 0X01;
00B6 ; PORTG ^= 0x02;
00B6 ; }
00B6 ; while(1)
00B6 ; {
00B6 ; ;// portout = 0xaa;
00B6 ; }
00B6 ; }*/
00B6 ; //============================
00B6 ; void initLCDM(void)
00B6 ; {
00B6 .dbline 94
00B6 ; PORTF |= 0XFF;
00B6 80916200 lds R24,98
00BA 8F6F ori R24,255
00BC 80936200 sts 98,R24
00C0 .dbline 95
00C0 ; SetCS;
00C0 969A sbi 0x12,6
00C2 .dbline 95
00C2 .dbline 96
00C2 ; SetRD;
00C2 959A sbi 0x12,5
00C4 .dbline 96
00C4 .dbline 97
00C4 ; SetWR;
00C4 979A sbi 0x12,7
00C6 .dbline 97
00C6 .dbline 98
00C6 ; SetRS;
00C6 189A sbi 0x3,0
00C8 .dbline 98
00C8 .dbline 105
00C8 ; // SetRST;
00C8 ; //delay_ms(30);
00C8 ; //ClrRST;
00C8 ; //delay_ms(800);
00C8 ; // SetRST;
00C8 ; //delay_ms(10);//
00C8 ; SdCmd(0xa0,0x07); LCD_ChkBusy(); //使能 BUSY 输出
00C8 27E0 ldi R18,7
00CA 30E0 ldi R19,0
00CC 00EA ldi R16,160
00CE 10E0 ldi R17,0
00D0 62D0 xcall _SdCmd
00D2 .dbline 105
00D2 99D0 xcall _LCD_ChkBusy
00D4 .dbline 106
00D4 ; SdCmd(0x81,0x40); LCD_ChkBusy(); //by default
00D4 20E4 ldi R18,64
00D6 30E0 ldi R19,0
00D8 01E8 ldi R16,129
00DA 10E0 ldi R17,0
00DC 5CD0 xcall _SdCmd
00DE .dbline 106
00DE 93D0 xcall _LCD_ChkBusy
00E0 .dbline 107
00E0 ; SdCmd(0x00,0xCD); LCD_ChkBusy(); //Whole Chip LCD Controller Reg(Char Mode)
00E0 2DEC ldi R18,205
00E2 30E0 ldi R19,0
00E4 0027 clr R16
00E6 1127 clr R17
00E8 56D0 xcall _SdCmd
00EA .dbline 107
00EA 8DD0 xcall _LCD_ChkBusy
00EC .dbline 108
00EC ; SdCmd(0x01,0xf2); LCD_ChkBusy(); //BUSY=HiPolity, ClockOut=enable, InternalFreq=4MHz
00EC 22EF ldi R18,242
00EE 30E0 ldi R19,0
00F0 01E0 ldi R16,1
00F2 10E0 ldi R17,0
00F4 50D0 xcall _SdCmd
00F6 .dbline 108
00F6 87D0 xcall _LCD_ChkBusy
00F8 .dbline 109
00F8 ; SdCmd(0x10,0x29); LCD_ChkBusy(); //Whole Chip Cursor Control Reg(disable cursor)
00F8 29E2 ldi R18,41
00FA 30E0 ldi R19,0
00FC 00E1 ldi R16,16
00FE 10E0 ldi R17,0
0100 4AD0 xcall _SdCmd
0102 .dbline 109
0102 81D0 xcall _LCD_ChkBusy
0104 .dbline 110
0104 ; SdCmd(0x11,0x10); LCD_ChkBusy(); //Distance of Words or Lines Reg(cursor=1,gap=0)
0104 20E1 ldi R18,16
0106 30E0 ldi R19,0
0108 01E1 ldi R16,17
010A 10E0 ldi R17,0
010C 44D0 xcall _SdCmd
010E .dbline 110
010E 7BD0 xcall _LCD_ChkBusy
0110 .dbline 111
0110 ; SdCmd(0x90,0x05); LCD_ChkBusy(); //Shift Clock Control Reg(320x240,69Hz)
0110 25E0 ldi R18,5
0112 30E0 ldi R19,0
0114 00E9 ldi R16,144
0116 10E0 ldi R17,0
0118 3ED0 xcall _SdCmd
011A .dbline 111
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -