📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _Start::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile d:\MYDOCU~1\ac19-1\main.c
0001 .dbsym e Start _Start c
0001 _JS::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile d:\MYDOCU~1\ac19-1\main.c
0002 .dbsym e JS _JS c
0002 _DisFlag::
0002 .blkb 1
.area idata
0002 01 .byte 1
.area data(ram, con, rel)
0003 .dbfile d:\MYDOCU~1\ac19-1\main.c
0003 .dbsym e DisFlag _DisFlag c
0003 _BeginFlag::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile d:\MYDOCU~1\ac19-1\main.c
0004 .dbsym e BeginFlag _BeginFlag c
.area lit(rom, con, rel)
0000 _cs0::
0000 5368616E6748616900 .byte 'S,'h,'a,'n,'g,'H,'a,'i,0
0009 .dbsym e cs0 _cs0 A[9:9]kc
0009 _cs1::
0009 2D5465737465722D00 .byte 45,'T,'e,'s,'t,'e,'r,45,0
0012 .dbsym e cs1 _cs1 A[9:9]kc
0012 _cs2::
0012 54657374696E672D00 .byte 'T,'e,'s,'t,'i,'n,'g,45,0
001B .dbsym e cs2 _cs2 A[9:9]kc
001B _dsp::
001B 52504D3A2020202000 .byte 'R,'P,'M,58,32,32,32,32,0
0024 .dbsym e dsp _dsp A[9:9]kc
.area text(rom, con, rel)
0000 .dbfile d:\MYDOCU~1\ac19-1\main.c
0000 .dbfunc e timer2_init _timer2_init fV
.even
0000 _timer2_init::
0000 .dbline -1
0000 .dbline 40
0000 ; //ICC-AVR application builder : 2007-9-20 10:30:53
0000 ; // Target : m16
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "head.h"
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #define xtal 8
0000 ;
0000 ; extern void WaitForEnable(void);
0000 ; extern void LcdWriteData(uchar W);
0000 ; extern void LcdWriteCommand(uchar CMD,uchar Attribc);
0000 ; extern void InitLcd(void);
0000 ; extern void Display(uchar dd);
0000 ; extern void DisplayOneChar(uchar x,uchar y,uchar Wdata);
0000 ; extern void ePutstr(uchar x,uchar y,uchar const *ptr);
0000 ;
0000 ;
0000 ; uchar Start=0,WorkFlag;
0000 ; uint WorkTime,DisTime,Counter;
0000 ; uint DisVal;
0000 ; uint cnt;
0000 ; uchar Flag,IntFlag,JS=0;
0000 ; uint tx,cx;
0000 ; uint disx[4];
0000 ; uchar DisFlag=1,EndFlag,BeginFlag=0;
0000 ;
0000 ; const uchar cs0[]={"ShangHai"};//欢迎界面
0000 ; const uchar cs1[]={"-Tester-"};//欢迎界面
0000 ; const uchar cs2[]={"Testing-"};//测试界面
0000 ; const uchar dsp[]={"RPM: "};//测试界面
0000 ;
0000 ; //TIMER2 initialize - prescale:64
0000 ; // WGM: Normal
0000 ; // desired value: 1mSec
0000 ; // actual value: 1.000mSec (0.0%)
0000 ; void timer2_init(void)
0000 ; {
0000 .dbline 41
0000 ; TCCR2 = 0x00; //stop
0000 2224 clr R2
0002 25BC out 0x25,R2
0004 .dbline 42
0004 ; ASSR = 0x00; //set async mode
0004 22BC out 0x22,R2
0006 .dbline 43
0006 ; TCNT2 = 0x83; //setup
0006 83E8 ldi R24,131
0008 84BD out 0x24,R24
000A .dbline 44
000A ; OCR2 = 0x7D;
000A 8DE7 ldi R24,125
000C 83BD out 0x23,R24
000E .dbline 45
000E ; TCCR2 = 0x04; //start
000E 84E0 ldi R24,4
0010 85BD out 0x25,R24
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e port_init _port_init fV
.even
0014 _port_init::
0014 .dbline -1
0014 .dbline 49
0014 ; }
0014 ;
0014 ; void port_init(void)
0014 ; {
0014 .dbline 50
0014 ; PORTA = 0x00;
0014 2224 clr R2
0016 2BBA out 0x1b,R2
0018 .dbline 51
0018 ; DDRA = 0xFF;
0018 8FEF ldi R24,255
001A 8ABB out 0x1a,R24
001C .dbline 52
001C ; PORTB = 0x00;
001C 28BA out 0x18,R2
001E .dbline 53
001E ; DDRB = 0xFF;
001E 87BB out 0x17,R24
0020 .dbline 54
0020 ; PORTC = 0x00; //m103 output only
0020 25BA out 0x15,R2
0022 .dbline 55
0022 ; DDRC = 0x00;
0022 24BA out 0x14,R2
0024 .dbline 56
0024 ; PORTD = 0xFF;
0024 82BB out 0x12,R24
0026 .dbline 57
0026 ; DDRD = 0xFF;
0026 81BB out 0x11,R24
0028 .dbline 58
0028 ; DDRD = 0x63;
0028 83E6 ldi R24,99
002A 81BB out 0x11,R24
002C .dbline -2
002C L2:
002C .dbline 0 ; func end
002C 0895 ret
002E .dbend
002E .dbfunc e init_devices _init_devices fV
.even
002E _init_devices::
002E .dbline -1
002E .dbline 63
002E ; }
002E ;
002E ; //call this routine to initialize all peripherals
002E ; void init_devices(void)
002E ; {
002E .dbline 65
002E ; //stop errant interrupts until set up
002E ; CLI(); //disable all interrupts
002E F894 cli
0030 .dbline 66
0030 ; port_init();
0030 F1DF xcall _port_init
0032 .dbline 67
0032 ; timer2_init();
0032 E6DF xcall _timer2_init
0034 .dbline 69
0034 ;
0034 ; MCUCR = 0x01;
0034 81E0 ldi R24,1
0036 85BF out 0x35,R24
0038 .dbline 70
0038 ; GICR = 0x40;
0038 80E4 ldi R24,64
003A 8BBF out 0x3b,R24
003C .dbline 71
003C ; TIMSK = 0x40; //timer interrupt sources
003C 89BF out 0x39,R24
003E .dbline 72
003E ; SEI(); //re-enable interrupts
003E 7894 sei
0040 .dbline -2
0040 L3:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbend
0042 .dbfunc e display1 _display1 fV
.even
0042 _display1::
0042 2297 sbiw R28,2
0044 .dbline -1
0044 .dbline 78
0044 ; //all peripherals are now initialized
0044 ; }
0044 ;
0044 ; /**********************欢迎界面********************/
0044 ; void display1(void)
0044 ; {
0044 .dbline 79
0044 ; LcdWriteCommand(0x01,1); //清屏,检测忙信号
0044 21E0 ldi R18,1
0046 01E0 ldi R16,1
0048 0E940000 xcall _LcdWriteCommand
004C .dbline 80
004C ; ePutstr(0,0,cs0);
004C 80E0 ldi R24,<_cs0
004E 90E0 ldi R25,>_cs0
0050 9983 std y+1,R25
0052 8883 std y+0,R24
0054 2227 clr R18
0056 0027 clr R16
0058 0E940000 xcall _ePutstr
005C .dbline 81
005C ; ePutstr(0,1,cs1);
005C 80E0 ldi R24,<_cs1
005E 90E0 ldi R25,>_cs1
0060 9983 std y+1,R25
0062 8883 std y+0,R24
0064 21E0 ldi R18,1
0066 0027 clr R16
0068 0E940000 xcall _ePutstr
006C .dbline -2
006C L4:
006C 2296 adiw R28,2
006E .dbline 0 ; func end
006E 0895 ret
0070 .dbend
0070 .dbfunc e display2 _display2 fV
.even
0070 _display2::
0070 2297 sbiw R28,2
0072 .dbline -1
0072 .dbline 85
0072 ; }
0072 ;
0072 ; void display2(void)
0072 ; {
0072 .dbline 86
0072 ; LcdWriteCommand(0x01,1); //清屏,检测忙信号
0072 21E0 ldi R18,1
0074 01E0 ldi R16,1
0076 0E940000 xcall _LcdWriteCommand
007A .dbline 87
007A ; ePutstr(0,0,cs2);
007A 80E0 ldi R24,<_cs2
007C 90E0 ldi R25,>_cs2
007E 9983 std y+1,R25
0080 8883 std y+0,R24
0082 2227 clr R18
0084 0027 clr R16
0086 0E940000 xcall _ePutstr
008A .dbline 88
008A ; ePutstr(0,1,dsp);
008A 80E0 ldi R24,<_dsp
008C 90E0 ldi R25,>_dsp
008E 9983 std y+1,R25
0090 8883 std y+0,R24
0092 21E0 ldi R18,1
0094 0027 clr R16
0096 0E940000 xcall _ePutstr
009A .dbline -2
009A L5:
009A 2296 adiw R28,2
009C .dbline 0 ; func end
009C 0895 ret
009E .dbend
009E .dbfunc e Delay_1ms _Delay_1ms fV
009E ; i -> R16,R17
.even
009E _Delay_1ms::
009E .dbline -1
009E .dbline 93
009E ; }
009E ;
009E ; //****************************************
009E ; void Delay_1ms(void) //1mS延时子函数
009E ; { uint i;
009E .dbline 94
009E ; for(i=1;i<(uint)(xtal*124);i++)
009E 01E0 ldi R16,1
00A0 10E0 ldi R17,0
00A2 02C0 xjmp L10
00A4 L7:
00A4 .dbline 95
00A4 L8:
00A4 .dbline 94
00A4 0F5F subi R16,255 ; offset = 1
00A6 1F4F sbci R17,255
00A8 L10:
00A8 .dbline 94
00A8 003E cpi R16,224
00AA E3E0 ldi R30,3
00AC 1E07 cpc R17,R30
00AE D0F3 brlo L7
00B0 .dbline -2
00B0 L6:
00B0 .dbline 0 ; func end
00B0 0895 ret
00B2 .dbsym r i 16 i
00B2 .dbend
00B2 .dbfunc e Delay_nms _Delay_nms fV
00B2 ; i -> R20,R21
00B2 ; n -> R22,R23
.even
00B2 _Delay_nms::
00B2 0E940000 xcall push_gset2
00B6 B801 movw R22,R16
00B8 .dbline -1
00B8 .dbline 99
00B8 ; ;
00B8 ; }
00B8 ; //=============================================
00B8 ; void Delay_nms(uint n) //n*1mS延时子函数
00B8 ; {
00B8 .dbline 100
00B8 ; uint i=0;
00B8 4427 clr R20
00BA 5527 clr R21
00BC 04C0 xjmp L13
00BE L12:
00BE .dbline 102
00BE .dbline 102
00BE EFDF xcall _Delay_1ms
00C0 .dbline 102
00C0 A895 wdr
00C2 .dbline 103
00C2 4F5F subi R20,255 ; offset = 1
00C4 5F4F sbci R21,255
00C6 .dbline 104
00C6 L13:
00C6 .dbline 101
00C6 ; while(i<n)
00C6 4617 cp R20,R22
00C8 5707 cpc R21,R23
00CA C8F3 brlo L12
00CC .dbline -2
00CC L11:
00CC 0E940000 xcall pop_gset2
00D0 .dbline 0 ; func end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -