📄 led7s.lst
字号:
__start:
__text_start:
003B E5CF LDI R28,0x5F
003C E0D4 LDI R29,4
003D BFCD OUT 0x3D,R28
003E BFDE OUT 0x3E,R29
003F 51C0 SUBI R28,0x10
0040 40D0 SBCI R29,0
0041 EA0A LDI R16,0xAA
0042 8308 STD Y+0,R16
0043 2400 CLR R0
0044 E6E0 LDI R30,0x60
0045 E0F0 LDI R31,0
0046 E010 LDI R17,0
0047 36E0 CPI R30,0x60
0048 07F1 CPC R31,R17
0049 F011 BEQ 0x004C
004A 9201 ST R0,Z+
004B CFFB RJMP 0x0047
004C 8300 STD Z+0,R16
004D E7E6 LDI R30,0x76
004E E0F0 LDI R31,0
004F E6A0 LDI R26,0x60
0050 E0B0 LDI R27,0
0051 E010 LDI R17,0
0052 37E6 CPI R30,0x76
0053 07F1 CPC R31,R17
0054 F021 BEQ 0x0059
0055 95C8 LPM
0056 9631 ADIW R30,1
0057 920D ST R0,X+
0058 CFF9 RJMP 0x0052
0059 940E0063 CALL _main
_exit:
005B CFFF RJMP _exit
FILE: F:\单片机源程序\AVR单片机程序\MAGE16\LED\main.c
(0001) //Project : LED Display
(0002) //ICC-AVR application builder : 2007-8-5
(0003) // Target : M16
(0004) // Crystal : 7.3728Mhz
(0005) // Writer : you hu
(0006) //descruption:
(0007) //ABCD 和 abcdefg dpi 共12个IO口
(0008) // 默认为 PC(0123) 和 PA
(0009) //LED数据 不显点,亮的段为1,连接为P0~P7对应a~g,dp
(0010) #include "config.h"
(0011)
(0012) void init_devices(void)
(0013) {
(0014) CLI(); //disable all interrupts
_init_devices:
005C 94F8 BCLR 7
(0015) MCUCR = 0x00;
005D 2422 CLR R2
005E BE25 OUT 0x35,R2
(0016) GICR = 0x00;
005F BE2B OUT 0x3B,R2
(0017) TIMSK = 0x00; //timer interrupt sources
0060 BE29 OUT 0x39,R2
(0018) SEI(); //re-enable interrupts
0061 9478 BSET 7
0062 9508 RET
(0019)
(0020) }
(0021)
(0022) void main(void)
(0023) {
(0024) unsigned int i;
(0025) init_devices();
_main:
i --> R20
0063 DFF8 RCALL _init_devices
(0026) led_init();
0064 940E00F3 CALL _led_init
0066 C009 RJMP 0x0070
(0027) while(1)
(0028) {
(0029) i++;
0067 5F4F SUBI R20,0xFF
0068 4F5F SBCI R21,0xFF
(0030) delay_ms(6);
0069 E006 LDI R16,6
006A E010 LDI R17,0
006B 940E00B4 CALL _delay_ms
(0031) display(i);
006D 018A MOVW R16,R20
006E 940E0114 CALL _display
0070 CFF6 RJMP 0x0067
0071 9508 RET
FILE: F:\单片机源程序\AVR单片机程序\MAGE16\LED\delay.c
(0001)
(0002) #include "config.h"
(0003)
(0004) void delay_1us(void)
(0005) {
(0006) asm("nop");
_delay_1us:
0072 0000 NOP
0073 9508 RET
(0007) }
(0008)
(0009) void delay_1ms(void)
(0010) {
(0011) unsigned int i;
(0012) for(i=(xtal*143-2);i>0;i--);
_delay_1ms:
i --> R16
0074 E706 LDI R16,0x76
0075 E014 LDI R17,4
0076 C002 RJMP 0x0079
0077 5001 SUBI R16,1
0078 4010 SBCI R17,0
0079 3000 CPI R16,0
007A 0701 CPC R16,R17
007B F7D9 BNE 0x0077
007C 9508 RET
_delay_1s:
i --> R20
007D 940E01AB CALL push_gset1
(0013) }
(0014)
(0015) /***********************
(0016) ** 1S延时,误差可能稍大
(0017) ** 250ms*4=1000ms
(0018) ************************/
(0019) void delay_1s(void)
(0020) {
(0021) unsigned int i;
(0022) for(i=250;i>0;i--) //250ms*4=1000ms
007F EF4A LDI R20,0xFA
0080 E050 LDI R21,0
0081 C003 RJMP 0x0085
(0023) delay_1ms();
0082 DFF1 RCALL _delay_1ms
0083 5041 SUBI R20,1
0084 4050 SBCI R21,0
0085 3040 CPI R20,0
0086 0745 CPC R20,R21
0087 F7D1 BNE 0x0082
(0024) for(i=250;i>0;i--)
0088 EF4A LDI R20,0xFA
0089 E050 LDI R21,0
008A C003 RJMP 0x008E
(0025) delay_1ms();
008B DFE8 RCALL _delay_1ms
008C 5041 SUBI R20,1
008D 4050 SBCI R21,0
008E 3040 CPI R20,0
008F 0745 CPC R20,R21
0090 F7D1 BNE 0x008B
(0026) for(i=250;i>0;i--)
0091 EF4A LDI R20,0xFA
0092 E050 LDI R21,0
0093 C003 RJMP 0x0097
(0027) delay_1ms();
0094 DFDF RCALL _delay_1ms
0095 5041 SUBI R20,1
0096 4050 SBCI R21,0
0097 3040 CPI R20,0
0098 0745 CPC R20,R21
0099 F7D1 BNE 0x0094
(0028) for(i=250;i>0;i--)
009A EF4A LDI R20,0xFA
009B E050 LDI R21,0
009C C003 RJMP 0x00A0
(0029) delay_1ms();
009D DFD6 RCALL _delay_1ms
009E 5041 SUBI R20,1
009F 4050 SBCI R21,0
00A0 3040 CPI R20,0
00A1 0745 CPC R20,R21
00A2 F7D1 BNE 0x009D
00A3 940E01AE CALL pop_gset1
00A5 9508 RET
_delay_us:
i --> R20
n --> R22
00A6 940E01A9 CALL push_gset2
00A8 01B8 MOVW R22,R16
(0030) }
(0031)
(0032) /***********************
(0033) **微秒级延时
(0034) ************************/
(0035) void delay_us(unsigned int n)
(0036) {
(0037) unsigned int i;
(0038) for(i=n;i>0;i--)
00A9 01AB MOVW R20,R22
00AA C003 RJMP 0x00AE
(0039) delay_1us();
00AB DFC6 RCALL _delay_1us
00AC 5041 SUBI R20,1
00AD 4050 SBCI R21,0
00AE 3040 CPI R20,0
00AF 0745 CPC R20,R21
00B0 F7D1 BNE 0x00AB
00B1 940E01A0 CALL pop_gset2
00B3 9508 RET
_delay_ms:
i --> R20
n --> R22
00B4 940E01A9 CALL push_gset2
00B6 01B8 MOVW R22,R16
(0040) }
(0041)
(0042) /***********************
(0043) **毫秒级延时
(0044) ************************/
(0045) void delay_ms(unsigned int n)
(0046) {
(0047) unsigned int i;
(0048) for(i=n;i>0;i--)
00B7 01AB MOVW R20,R22
00B8 C003 RJMP 0x00BC
(0049) delay_1ms();
00B9 DFBA RCALL _delay_1ms
00BA 5041 SUBI R20,1
00BB 4050 SBCI R21,0
00BC 3040 CPI R20,0
00BD 0745 CPC R20,R21
00BE F7D1 BNE 0x00B9
00BF 940E01A0 CALL pop_gset2
00C1 9508 RET
_delay_s:
j --> R20
i --> R22
n --> R22
00C2 940E01A9 CALL push_gset2
00C4 01B8 MOVW R22,R16
(0050) }
(0051)
(0052) /***********************
(0053) **秒级延时,太浪费资源,不建议使用
(0054) ************************/
(0055) void delay_s(unsigned int n)
(0056) {
(0057) unsigned int i,j;
(0058) for(j=n;j>0;j--)
00C5 01AB MOVW R20,R22
00C6 C026 RJMP 0x00ED
(0059) {
(0060) for(i=250;i>0;i--) //250ms*4=1000ms
00C7 EF6A LDI R22,0xFA
00C8 E070 LDI R23,0
00C9 C003 RJMP 0x00CD
(0061) delay_1ms();
00CA DFA9 RCALL _delay_1ms
00CB 5061 SUBI R22,1
00CC 4070 SBCI R23,0
00CD 3060 CPI R22,0
00CE 0767 CPC R22,R23
00CF F7D1 BNE 0x00CA
(0062) for(i=250;i>0;i--)
00D0 EF6A LDI R22,0xFA
00D1 E070 LDI R23,0
00D2 C003 RJMP 0x00D6
(0063) delay_1ms();
00D3 DFA0 RCALL _delay_1ms
00D4 5061 SUBI R22,1
00D5 4070 SBCI R23,0
00D6 3060 CPI R22,0
00D7 0767 CPC R22,R23
00D8 F7D1 BNE 0x00D3
(0064) for(i=250;i>0;i--)
00D9 EF6A LDI R22,0xFA
00DA E070 LDI R23,0
00DB C003 RJMP 0x00DF
(0065) delay_1ms();
00DC DF97 RCALL _delay_1ms
00DD 5061 SUBI R22,1
00DE 4070 SBCI R23,0
00DF 3060 CPI R22,0
00E0 0767 CPC R22,R23
00E1 F7D1 BNE 0x00DC
(0066) for(i=250;i>0;i--)
00E2 EF6A LDI R22,0xFA
00E3 E070 LDI R23,0
00E4 C003 RJMP 0x00E8
(0067) delay_1ms();
00E5 DF8E RCALL _delay_1ms
00E6 5061 SUBI R22,1
00E7 4070 SBCI R23,0
00E8 3060 CPI R22,0
00E9 0767 CPC R22,R23
00EA F7D1 BNE 0x00E5
00EB 5041 SUBI R20,1
00EC 4050 SBCI R21,0
00ED 3040 CPI R20,0
00EE 0745 CPC R20,R21
00EF F6B9 BNE 0x00C7
00F0 940E01A0 CALL pop_gset2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -