📄 跑马灯.lst
字号:
__text_start:
__start:
13 E5CF LDI R28,0x5F
14 E0D4 LDI R29,4
15 BFCD OUT 0x3D,R28
16 BFDE OUT 0x3E,R29
17 51CE SUBI R28,0x1E
18 40D0 SBCI R29,0
19 EA0A LDI R16,0xAA
1A 8308 STD Y+0,R16
1B 2400 CLR R0
1C E6E0 LDI R30,0x60
1D E0F0 LDI R31,0
1E E010 LDI R17,0
1F 36E0 CPI R30,0x60
20 07F1 CPC R31,R17
21 F011 BEQ 0x0024
22 9201 ST R0,Z+
23 CFFB RJMP 0x001F
24 8300 STD Z+0,R16
25 E2E6 LDI R30,0x26
26 E0F0 LDI R31,0
27 E6A0 LDI R26,0x60
28 E0B0 LDI R27,0
29 E010 LDI R17,0
2A E000 LDI R16,0
2B BF0B OUT 0x3B,R16
2C 32E6 CPI R30,0x26
2D 07F1 CPC R31,R17
2E F021 BEQ 0x0033
2F 95C8 LPM
30 9631 ADIW R30,1
31 920D ST R0,X+
32 CFF9 RJMP 0x002C
33 D032 RCALL _main
_exit:
34 CFFF RJMP _exit
FILE: E:\xiaozhiyong2009\设计资料\项目设计\mega8_C语言常用程序\ICCAVR_mega8_跑马灯\跑马灯.c
(0001) //ICC-AVR application builder : 2009-3-10 13:53:36
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004)
(0005) #include <iom8v.h>
(0006) #include <macros.h>
(0007)
(0008) void port_init(void)
(0009) {
(0010) PORTB = 0x00;
_port_init:
35 2422 CLR R2
36 BA28 OUT 0x18,R2
(0011) DDRB = 0x00;
37 BA27 OUT 0x17,R2
(0012) PORTC = 0x00; //m103 output only
38 BA25 OUT 0x15,R2
(0013) DDRC = 0x00;
39 BA24 OUT 0x14,R2
(0014) PORTD = 0x00;
3A BA22 OUT 0x12,R2
(0015) DDRD = 0x00;
3B BA21 OUT 0x11,R2
3C 9508 RET
(0016) }
(0017)
(0018) //call this routine to initialize all peripherals
(0019) void init_devices(void)
(0020) {
(0021) //stop errant interrupts until set up
(0022) CLI(); //disable all interrupts
_init_devices:
3D 94F8 BCLR 7
(0023) port_init();
3E DFF6 RCALL _port_init
(0024)
(0025) MCUCR = 0x00;
3F 2422 CLR R2
40 BE25 OUT 0x35,R2
(0026) GICR = 0x00;
41 BE2B OUT 0x3B,R2
(0027) TIMSK = 0x00; //timer interrupt sources
42 BE29 OUT 0x39,R2
(0028) SEI(); //re-enable interrupts
43 9478 BSET 7
44 9508 RET
(0029) //all peripherals are now initialized
(0030) }
(0031)
(0032) /************************************
(0033) Name :小延时程序
(0034) Target :atmega8
(0035) Crystal(晶振):8M
(0036) ************************************/
(0037) void delay()
(0038) {
(0039) unsigned int i;//最大值65536
(0040) for (i=0;i<40000;i++)
_delay:
i --> R16
45 2700 CLR R16
46 2711 CLR R17
47 C002 RJMP 0x004A
48 5F0F SUBI R16,0xFF
49 4F1F SBCI R17,0xFF
4A E480 LDI R24,0x40
4B E99C LDI R25,0x9C
4C E0A0 LDI R26,0
4D E0B0 LDI R27,0
4E 0118 MOVW R2,R16
4F 2444 CLR R4
50 2455 CLR R5
51 1628 CP R2,R24
52 0639 CPC R3,R25
53 064A CPC R4,R26
54 065B CPC R5,R27
55 F394 BLT 0x0048
56 9508 RET
_show_LED:
i --> R20
57 934A ST R20,-Y
(0041) {;}
(0042) }
(0043)
(0044) /************************************
(0045) Name :跑马灯
(0046) Target :atmega8
(0047) Crystal(晶振):8M
(0048) **************************************/
(0049) void show_LED()
(0050) {
(0051) unsigned char i;
(0052) DDRB=0xff;//设为输出
58 EF8F LDI R24,0xFF
59 BB87 OUT 0x17,R24
(0053) for (i=0;i<8;i++)
5A 2744 CLR R20
5B C006 RJMP 0x0062
(0054) {
(0055) PORTB=(1<<i);
5C E001 LDI R16,1
5D 2F14 MOV R17,R20
5E D00D RCALL lsl8
5F BB08 OUT 0x18,R16
(0056) delay();
60 DFE4 RCALL _delay
61 9543 INC R20
62 3048 CPI R20,0x8
63 F3C0 BCS 0x005C
64 9149 LD R20,Y+
65 9508 RET
(0057) }
(0058) }
(0059)
(0060) void main()
(0061) {
(0062) port_init();
_main:
66 DFCE RCALL _port_init
(0063) init_devices();
67 DFD5 RCALL _init_devices
68 C001 RJMP 0x006A
(0064) while(1)
(0065) {
(0066) show_LED();
FILE: <library>
69 DFED RCALL _show_LED
6A CFFE RJMP 0x0069
6B 9508 RET
lsl8:
6C 2311 TST R17
6D F019 BEQ 0x0071
6E 0F00 LSL R16
6F 951A DEC R17
70 CFFB RJMP lsl8
71 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -