⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runled.lst

📁 4个跑马灯
💻 LST
📖 第 1 页 / 共 2 页
字号:
__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 + -