📄 runled.lst
字号:
__text_start:
__start:
002A E5CF LDI R28,0x5F
002B E0D4 LDI R29,4
002C BFCD OUT 0x3D,R28
002D BFDE OUT 0x3E,R29
002E 51C0 SUBI R28,0x10
002F 40D0 SBCI R29,0
0030 EA0A LDI R16,0xAA
0031 8308 STD Y+0,R16
0032 2400 CLR R0
0033 E6E0 LDI R30,0x60
0034 E0F0 LDI R31,0
0035 E010 LDI R17,0
0036 36E0 CPI R30,0x60
0037 07F1 CPC R31,R17
0038 F011 BEQ 0x003B
0039 9201 ST R0,Z+
003A CFFB RJMP 0x0036
003B 8300 STD Z+0,R16
003C E5E4 LDI R30,0x54
003D E0F0 LDI R31,0
003E E6A0 LDI R26,0x60
003F E0B0 LDI R27,0
0040 E010 LDI R17,0
0041 35E4 CPI R30,0x54
0042 07F1 CPC R31,R17
0043 F021 BEQ 0x0048
0044 95C8 LPM
0045 9631 ADIW R30,1
0046 920D ST R0,X+
0047 CFF9 RJMP 0x0041
0048 940E023D CALL _main
_exit:
004A CFFF RJMP _exit
FILE: F:\程序设计\程序公文包\开发包\4LED-run\runled.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #include <stdio.h>
(0004)
(0005) #define uchar unsigned char
(0006) #define uint unsigned int
(0007)
(0008) #define D01ON PORTB&=(~(1<<PB3)) //打开LED D1 与的方式置0
(0009) #define D01OFF PORTB|=(1<<PB3) //关闭LED D1 或的方式置1
(0010) #define D02ON PORTB&=(~(1<<PB2))
(0011) #define D02OFF PORTB|=(1<<PB2)
(0012) #define D03ON PORTB&=(~(1<<PB1))
(0013) #define D03OFF PORTB|=(1<<PB1)
(0014) #define D04ON PORTB&=(~(1<<PB0))
(0015) #define D04OFF PORTB|=(1<<PB0)
(0016)
(0017) #define LED1 D01ON;D02OFF;D03OFF;D04OFF;delay_nms(100);
(0018) #define LED12 D01ON;D02ON;D03OFF;D04OFF;delay_nms(100);
(0019) #define LED14 D01ON;D02OFF;D03ON;D04OFF;delay_nms(100);
(0020) #define LED13 D01ON;D02OFF;D03OFF;D04ON;delay_nms(100);
(0021)
(0022) #define LED2 D02ON;D01OFF;D03OFF;D04OFF;delay_nms(100);
(0023) #define LED21 D02ON;D01ON;D03OFF;D04OFF;delay_nms(100);
(0024) #define LED24 D02ON;D01OFF;D03ON;D04OFF;delay_nms(100);
(0025) #define LED23 D02ON;D01OFF;D03OFF;D04ON;delay_nms(100);
(0026)
(0027) #define LED4 D03ON;D02OFF;D01OFF;D04OFF;delay_nms(100);
(0028) #define LED41 D03ON;D02OFF;D01ON;D04OFF;delay_nms(100);
(0029) #define LED42 D03ON;D02ON;D01OFF;D04OFF;delay_nms(100);
(0030) #define LED43 D03ON;D02OFF;D01OFF;D04ON;delay_nms(100);
(0031)
(0032) #define LED3 D04ON;D02OFF;D03OFF;D01OFF;delay_nms(100);
(0033) #define LED31 D04ON;D02OFF;D03OFF;D01ON;delay_nms(100);
(0034) #define LED32 D04ON;D02ON;D03OFF;D01OFF;delay_nms(100);
(0035) #define LED34 D04ON;D02OFF;D03ON;D01OFF;delay_nms(100);
(0036)
(0037) #define LED44 D01ON;D02ON;D03ON;D04ON;delay_nms(100); ///全亮
(0038) #define LED00 D01OFF;D02OFF;D03OFF;D04OFF;delay_nms(100); //全灭
(0039)
(0040)
(0041)
(0042) #define BuzzerON PORTC|=(1<<PC6)
(0043) #define BuzzerOFF PORTC&=(~(1<<PC6))
(0044) //比#define BuzzerOFF PORTC=0x00全修改方式相对好,仅修改个别位
(0045) #define BuzzerLongON BuzzerON;delay_nms(500);BuzzerOFF;
(0046) #define BuzzerShortON BuzzerON;delay_nms(100);BuzzerOFF;
(0047) /*
(0048) void timer1_init(void);
(0049) void delay_nms(unsigned int n);
(0050)
(0051) void timer1_init(void)///1秒中断初始化 定时1
(0052) {
(0053) TCCR1B=0x00;
(0054) TCNT1H=0xf0;
(0055) TCNT1L=0xBE;
(0056) OCR1AH=0x00;
(0057) OCR1AL=0x00;
(0058) OCR1BH=0x00;
(0059) OCR1BL=0x00;
(0060) TCCR1A=0x00;
(0061) TCCR1B=0x05;
(0062) }
(0063)
(0064) uint count60s=0; //60秒=1分
(0065) uint count3600s=0; //60分钟=1时
(0066) uint count1h=0; //60分钟=1时
(0067)
(0068)
(0069)
(0070)
(0071) #pragma interrupt_handler timer1_ovf_isr:7
(0072) void timer1_ovf_isr(void) ///1秒中断
(0073) {
(0074) TCNT1H=0xf0;
(0075) TCNT1L=0xbe;
(0076) if (count60s<60)
(0077) {BuzzerShortON;
(0078) count60s++;
(0079) }
(0080) if (count60s>60)
(0081) {
(0082) count60s=1;
(0083) count3600s++;
(0084) if (count3600s<60)
(0085) {
(0086) count3600s++;
(0087) }
(0088) if (count3600s>60)
(0089) {
(0090) count3600s=1;
(0091) count1h++;
(0092) if (count1h=7)
(0093) {
(0094) count1h=0;
(0095) while(1)
(0096) {
(0097) BuzzerShortON;
(0098) }
(0099) }
(0100) }
(0101) }
(0102) }
(0103)
(0104)
(0105) #pragma interrupt_handler timer1_ovf_isr:7
(0106) void timer1_ovf_isr(void) ///1秒中断
(0107) {
(0108) TCNT1H=0xf0;
(0109) TCNT1L=0xbe;
(0110) BuzzerShortON;
(0111) if (count60s<60)
(0112) {
(0113) BuzzerShortON;
(0114) count60s++;
(0115) }
(0116)
(0117) }
(0118) */
(0119) void WDT_ON(void)
(0120) {
(0121) WDR(); //this prevents a timout on enabling
_WDT_ON:
004B 95A8 WDR
(0122) WDTCR|=(1<<WDTOE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x1F; //特别注意这一条不是ICC生成的,是后来加上的。
004C B581 IN R24,0x21
004D 618F ORI R24,0x1F
004E BD81 OUT 0x21,R24
(0123) WDTCR&=(~(1<<WDTOE))|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
004F B581 IN R24,0x21
0050 7E8F ANDI R24,0xEF
0051 BD81 OUT 0x21,R24
0052 9508 RET
(0124) }
(0125)
(0126) void delay_1ms(void)//1ms延时函数
(0127) {
(0128) unsigned int i;
(0129) for (i=0;i<150;i++)
_delay_1ms:
i --> R16
0053 2700 CLR R16
0054 2711 CLR R17
0055 C003 RJMP 0x0059
(0130) WDR();
0056 95A8 WDR
0057 5F0F SUBI R16,0xFF
0058 4F1F SBCI R17,0xFF
0059 3906 CPI R16,0x96
005A E0E0 LDI R30,0
005B 071E CPC R17,R30
005C F3C8 BCS 0x0056
005D 9508 RET
_delay_nms:
i --> R20
n --> R22
005E 940E026C CALL push_gset2
0060 01B8 MOVW R22,R16
(0131) }
(0132)
(0133) void delay_nms(unsigned int n)//延时n毫秒
(0134) {
(0135) unsigned int i;
(0136) for (i=0;i<n;i++)//执行n次1毫秒延时
0061 2744 CLR R20
0062 2755 CLR R21
0063 C003 RJMP 0x0067
(0137) {
(0138) delay_1ms();
0064 DFEE RCALL _delay_1ms
0065 5F4F SUBI R20,0xFF
0066 4F5F SBCI R21,0xFF
0067 1746 CP R20,R22
0068 0757 CPC R21,R23
0069 F3D0 BCS 0x0064
(0139) }
(0140) WDR();
006A 95A8 WDR
006B 940E0263 CALL pop_gset2
006D 9508 RET
_LED_Run:
i --> R20
006E 940E026E CALL push_gset1
(0141) }
(0142)
(0143) void LED_Run(void)
(0144) {
(0145) uint i;
(0146) for (i=5;i>0;i--){LED1;LED12;LED23;LED34;LED41;}
0070 E045 LDI R20,5
0071 E050 LDI R21,0
0072 C025 RJMP 0x0098
0073 98C3 CBI 0x18,3
0074 9AC2 SBI 0x18,2
0075 9AC1 SBI 0x18,1
0076 9AC0 SBI 0x18,0
0077 E604 LDI R16,0x64
0078 E010 LDI R17,0
0079 DFE4 RCALL _delay_nms
007A 98C3 CBI 0x18,3
007B 98C2 CBI 0x18,2
007C 9AC1 SBI 0x18,1
007D 9AC0 SBI 0x18,0
007E E604 LDI R16,0x64
007F E010 LDI R17,0
0080 DFDD RCALL _delay_nms
0081 98C2 CBI 0x18,2
0082 9AC3 SBI 0x18,3
0083 9AC1 SBI 0x18,1
0084 98C0 CBI 0x18,0
0085 E604 LDI R16,0x64
0086 E010 LDI R17,0
0087 DFD6 RCALL _delay_nms
0088 98C0 CBI 0x18,0
0089 9AC2 SBI 0x18,2
008A 98C1 CBI 0x18,1
008B 9AC3 SBI 0x18,3
008C E604 LDI R16,0x64
008D E010 LDI R17,0
008E DFCF RCALL _delay_nms
008F 98C1 CBI 0x18,1
0090 9AC2 SBI 0x18,2
0091 98C3 CBI 0x18,3
0092 9AC0 SBI 0x18,0
0093 E604 LDI R16,0x64
0094 E010 LDI R17,0
0095 DFC8 RCALL _delay_nms
0096 5041 SUBI R20,1
0097 4050 SBCI R21,0
0098 3040 CPI R20,0
0099 0745 CPC R20,R21
009A F6C1 BNE 0x0073
(0147) for (i=5;i>0;i--){LED1;LED14;LED43;LED32;LED21;}
009B E045 LDI R20,5
009C E050 LDI R21,0
009D C025 RJMP 0x00C3
009E 98C3 CBI 0x18,3
009F 9AC2 SBI 0x18,2
00A0 9AC1 SBI 0x18,1
00A1 9AC0 SBI 0x18,0
00A2 E604 LDI R16,0x64
00A3 E010 LDI R17,0
00A4 DFB9 RCALL _delay_nms
00A5 98C3 CBI 0x18,3
00A6 9AC2 SBI 0x18,2
00A7 98C1 CBI 0x18,1
00A8 9AC0 SBI 0x18,0
00A9 E604 LDI R16,0x64
00AA E010 LDI R17,0
00AB DFB2 RCALL _delay_nms
00AC 98C1 CBI 0x18,1
00AD 9AC2 SBI 0x18,2
00AE 9AC3 SBI 0x18,3
00AF 98C0 CBI 0x18,0
00B0 E604 LDI R16,0x64
00B1 E010 LDI R17,0
00B2 DFAB RCALL _delay_nms
00B3 98C0 CBI 0x18,0
00B4 98C2 CBI 0x18,2
00B5 9AC1 SBI 0x18,1
00B6 9AC3 SBI 0x18,3
00B7 E604 LDI R16,0x64
00B8 E010 LDI R17,0
00B9 DFA4 RCALL _delay_nms
00BA 98C2 CBI 0x18,2
00BB 98C3 CBI 0x18,3
00BC 9AC1 SBI 0x18,1
00BD 9AC0 SBI 0x18,0
00BE E604 LDI R16,0x64
00BF E010 LDI R17,0
00C0 DF9D RCALL _delay_nms
00C1 5041 SUBI R20,1
00C2 4050 SBCI R21,0
00C3 3040 CPI R20,0
00C4 0745 CPC R20,R21
00C5 F6C1 BNE 0x009E
(0148) for (i=4;i>0;i--){LED1;LED14;LED2;LED23;LED3;LED32;LED4;LED41;}
00C6 E044 LDI R20,4
00C7 E050 LDI R21,0
00C8 C03A RJMP 0x0103
00C9 98C3 CBI 0x18,3
00CA 9AC2 SBI 0x18,2
00CB 9AC1 SBI 0x18,1
00CC 9AC0 SBI 0x18,0
00CD E604 LDI R16,0x64
00CE E010 LDI R17,0
00CF DF8E RCALL _delay_nms
00D0 98C3 CBI 0x18,3
00D1 9AC2 SBI 0x18,2
00D2 98C1 CBI 0x18,1
00D3 9AC0 SBI 0x18,0
00D4 E604 LDI R16,0x64
00D5 E010 LDI R17,0
00D6 DF87 RCALL _delay_nms
00D7 98C2 CBI 0x18,2
00D8 9AC3 SBI 0x18,3
00D9 9AC1 SBI 0x18,1
00DA 9AC0 SBI 0x18,0
00DB E604 LDI R16,0x64
00DC E010 LDI R17,0
00DD DF80 RCALL _delay_nms
00DE 98C2 CBI 0x18,2
00DF 9AC3 SBI 0x18,3
00E0 9AC1 SBI 0x18,1
00E1 98C0 CBI 0x18,0
00E2 E604 LDI R16,0x64
00E3 E010 LDI R17,0
00E4 DF79 RCALL _delay_nms
00E5 98C0 CBI 0x18,0
00E6 9AC2 SBI 0x18,2
00E7 9AC1 SBI 0x18,1
00E8 9AC3 SBI 0x18,3
00E9 E604 LDI R16,0x64
00EA E010 LDI R17,0
00EB DF72 RCALL _delay_nms
00EC 98C0 CBI 0x18,0
00ED 98C2 CBI 0x18,2
00EE 9AC1 SBI 0x18,1
00EF 9AC3 SBI 0x18,3
00F0 E604 LDI R16,0x64
00F1 E010 LDI R17,0
00F2 DF6B RCALL _delay_nms
00F3 98C1 CBI 0x18,1
00F4 9AC2 SBI 0x18,2
00F5 9AC3 SBI 0x18,3
00F6 9AC0 SBI 0x18,0
00F7 E604 LDI R16,0x64
00F8 E010 LDI R17,0
00F9 DF64 RCALL _delay_nms
00FA 98C1 CBI 0x18,1
00FB 9AC2 SBI 0x18,2
00FC 98C3 CBI 0x18,3
00FD 9AC0 SBI 0x18,0
00FE E604 LDI R16,0x64
00FF E010 LDI R17,0
0100 DF5D RCALL _delay_nms
0101 5041 SUBI R20,1
0102 4050 SBCI R21,0
0103 3040 CPI R20,0
0104 0745 CPC R20,R21
0105 F009 BEQ 0x0107
0106 CFC2 RJMP 0x00C9
(0149) for (i=4;i>0;i--){LED1;LED13;LED2;LED24;LED3;LED31;LED4;LED42;}
0107 E044 LDI R20,4
0108 E050 LDI R21,0
0109 C03A RJMP 0x0144
010A 98C3 CBI 0x18,3
010B 9AC2 SBI 0x18,2
010C 9AC1 SBI 0x18,1
010D 9AC0 SBI 0x18,0
010E E604 LDI R16,0x64
010F E010 LDI R17,0
0110 DF4D RCALL _delay_nms
0111 98C3 CBI 0x18,3
0112 9AC2 SBI 0x18,2
0113 9AC1 SBI 0x18,1
0114 98C0 CBI 0x18,0
0115 E604 LDI R16,0x64
0116 E010 LDI R17,0
0117 DF46 RCALL _delay_nms
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -