📄 跑马灯.lis
字号:
.module _跑马灯.c
.area text(rom, con, rel)
0000 .dbfile E:\xiaozhiyong2009\设计资料\项目设计\mega8_C语言常用程序\ICCAVR_mega8_跑马灯\跑马灯.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2009-3-10 13:53:36
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 11
0004 ; DDRB = 0x00;
0004 27BA out 0x17,R2
0006 .dbline 12
0006 ; PORTC = 0x00; //m103 output only
0006 25BA out 0x15,R2
0008 .dbline 13
0008 ; DDRC = 0x00;
0008 24BA out 0x14,R2
000A .dbline 14
000A ; PORTD = 0x00;
000A 22BA out 0x12,R2
000C .dbline 15
000C ; DDRD = 0x00;
000C 21BA out 0x11,R2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e init_devices _init_devices fV
.even
0010 _init_devices::
0010 .dbline -1
0010 .dbline 20
0010 ; }
0010 ;
0010 ; //call this routine to initialize all peripherals
0010 ; void init_devices(void)
0010 ; {
0010 .dbline 22
0010 ; //stop errant interrupts until set up
0010 ; CLI(); //disable all interrupts
0010 F894 cli
0012 .dbline 23
0012 ; port_init();
0012 F6DF rcall _port_init
0014 .dbline 25
0014 ;
0014 ; MCUCR = 0x00;
0014 2224 clr R2
0016 25BE out 0x35,R2
0018 .dbline 26
0018 ; GICR = 0x00;
0018 2BBE out 0x3b,R2
001A .dbline 27
001A ; TIMSK = 0x00; //timer interrupt sources
001A 29BE out 0x39,R2
001C .dbline 28
001C ; SEI(); //re-enable interrupts
001C 7894 sei
001E .dbline -2
001E L2:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbend
0020 .dbfunc e delay _delay fV
0020 ; i -> R16,R17
.even
0020 _delay::
0020 .dbline -1
0020 .dbline 38
0020 ; //all peripherals are now initialized
0020 ; }
0020 ;
0020 ; /************************************
0020 ; Name :小延时程序
0020 ; Target :atmega8
0020 ; Crystal(晶振):8M
0020 ; ************************************/
0020 ; void delay()
0020 ; {
0020 .dbline 40
0020 ; unsigned int i;//最大值65536
0020 ; for (i=0;i<40000;i++)
0020 0027 clr R16
0022 1127 clr R17
0024 02C0 rjmp L7
0026 L4:
0026 .dbline 41
0026 ; {;}
0026 .dbline 41
0026 .dbline 41
0026 L5:
0026 .dbline 40
0026 0F5F subi R16,255 ; offset = 1
0028 1F4F sbci R17,255
002A L7:
002A .dbline 40
002A 80E4 ldi R24,64
002C 9CE9 ldi R25,156
002E A0E0 ldi R26,0
0030 B0E0 ldi R27,0
0032 1801 movw R2,R16
0034 4424 clr R4
0036 5524 clr R5
0038 2816 cp R2,R24
003A 3906 cpc R3,R25
003C 4A06 cpc R4,R26
003E 5B06 cpc R5,R27
0040 94F3 brlt L4
0042 X0:
0042 .dbline -2
0042 L3:
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r i 16 i
0044 .dbend
0044 .dbfunc e show_LED _show_LED fV
0044 ; i -> R20
.even
0044 _show_LED::
0044 4A93 st -y,R20
0046 .dbline -1
0046 .dbline 50
0046 ; }
0046 ;
0046 ; /************************************
0046 ; Name :跑马灯
0046 ; Target :atmega8
0046 ; Crystal(晶振):8M
0046 ; **************************************/
0046 ; void show_LED()
0046 ; {
0046 .dbline 52
0046 ; unsigned char i;
0046 ; DDRB=0xff;//设为输出
0046 8FEF ldi R24,255
0048 87BB out 0x17,R24
004A .dbline 53
004A ; for (i=0;i<8;i++)
004A 4427 clr R20
004C 06C0 rjmp L12
004E L9:
004E .dbline 54
004E ; {
004E .dbline 55
004E ; PORTB=(1<<i);
004E 01E0 ldi R16,1
0050 142F mov R17,R20
0052 00D0 rcall lsl8
0054 08BB out 0x18,R16
0056 .dbline 56
0056 ; delay();
0056 E4DF rcall _delay
0058 .dbline 57
0058 ; }
0058 L10:
0058 .dbline 53
0058 4395 inc R20
005A L12:
005A .dbline 53
005A 4830 cpi R20,8
005C C0F3 brlo L9
005E X1:
005E .dbline -2
005E L8:
005E .dbline 0 ; func end
005E 4991 ld R20,y+
0060 0895 ret
0062 .dbsym r i 20 c
0062 .dbend
0062 .dbfunc e main _main fV
.even
0062 _main::
0062 .dbline -1
0062 .dbline 61
0062 ; }
0062 ;
0062 ; void main()
0062 ; {
0062 .dbline 62
0062 ; port_init();
0062 CEDF rcall _port_init
0064 .dbline 63
0064 ; init_devices();
0064 D5DF rcall _init_devices
0066 01C0 rjmp L15
0068 L14:
0068 .dbline 65
0068 ; while(1)
0068 ; {
0068 .dbline 66
0068 ; show_LED();
0068 EDDF rcall _show_LED
006A .dbline 67
006A ; }
006A L15:
006A .dbline 64
006A FECF rjmp L14
006C X2:
006C .dbline -2
006C L13:
006C .dbline 0 ; func end
006C 0895 ret
006E .dbend
006E ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -