📄 runled.lis
字号:
.module runled.c
.area text(rom, con, rel)
0000 .dbfile F:\程序设计\程序公文包\开发包\4LED-run\runled.c
0000 .dbfunc e WDT_ON _WDT_ON fV
.even
0000 _WDT_ON::
0000 .dbline -1
0000 .dbline 120
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include <stdio.h>
0000 ;
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ;
0000 ; #define D01ON PORTB&=(~(1<<PB3)) //打开LED D1 与的方式置0
0000 ; #define D01OFF PORTB|=(1<<PB3) //关闭LED D1 或的方式置1
0000 ; #define D02ON PORTB&=(~(1<<PB2))
0000 ; #define D02OFF PORTB|=(1<<PB2)
0000 ; #define D03ON PORTB&=(~(1<<PB1))
0000 ; #define D03OFF PORTB|=(1<<PB1)
0000 ; #define D04ON PORTB&=(~(1<<PB0))
0000 ; #define D04OFF PORTB|=(1<<PB0)
0000 ;
0000 ; #define LED1 D01ON;D02OFF;D03OFF;D04OFF;delay_nms(100);
0000 ; #define LED12 D01ON;D02ON;D03OFF;D04OFF;delay_nms(100);
0000 ; #define LED14 D01ON;D02OFF;D03ON;D04OFF;delay_nms(100);
0000 ; #define LED13 D01ON;D02OFF;D03OFF;D04ON;delay_nms(100);
0000 ;
0000 ; #define LED2 D02ON;D01OFF;D03OFF;D04OFF;delay_nms(100);
0000 ; #define LED21 D02ON;D01ON;D03OFF;D04OFF;delay_nms(100);
0000 ; #define LED24 D02ON;D01OFF;D03ON;D04OFF;delay_nms(100);
0000 ; #define LED23 D02ON;D01OFF;D03OFF;D04ON;delay_nms(100);
0000 ;
0000 ; #define LED4 D03ON;D02OFF;D01OFF;D04OFF;delay_nms(100);
0000 ; #define LED41 D03ON;D02OFF;D01ON;D04OFF;delay_nms(100);
0000 ; #define LED42 D03ON;D02ON;D01OFF;D04OFF;delay_nms(100);
0000 ; #define LED43 D03ON;D02OFF;D01OFF;D04ON;delay_nms(100);
0000 ;
0000 ; #define LED3 D04ON;D02OFF;D03OFF;D01OFF;delay_nms(100);
0000 ; #define LED31 D04ON;D02OFF;D03OFF;D01ON;delay_nms(100);
0000 ; #define LED32 D04ON;D02ON;D03OFF;D01OFF;delay_nms(100);
0000 ; #define LED34 D04ON;D02OFF;D03ON;D01OFF;delay_nms(100);
0000 ;
0000 ; #define LED44 D01ON;D02ON;D03ON;D04ON;delay_nms(100); ///全亮
0000 ; #define LED00 D01OFF;D02OFF;D03OFF;D04OFF;delay_nms(100); //全灭
0000 ;
0000 ;
0000 ;
0000 ; #define BuzzerON PORTC|=(1<<PC6)
0000 ; #define BuzzerOFF PORTC&=(~(1<<PC6))
0000 ; //比#define BuzzerOFF PORTC=0x00全修改方式相对好,仅修改个别位
0000 ; #define BuzzerLongON BuzzerON;delay_nms(500);BuzzerOFF;
0000 ; #define BuzzerShortON BuzzerON;delay_nms(100);BuzzerOFF;
0000 ; /*
0000 ; void timer1_init(void);
0000 ; void delay_nms(unsigned int n);
0000 ;
0000 ; void timer1_init(void)///1秒中断初始化 定时1
0000 ; {
0000 ; TCCR1B=0x00;
0000 ; TCNT1H=0xf0;
0000 ; TCNT1L=0xBE;
0000 ; OCR1AH=0x00;
0000 ; OCR1AL=0x00;
0000 ; OCR1BH=0x00;
0000 ; OCR1BL=0x00;
0000 ; TCCR1A=0x00;
0000 ; TCCR1B=0x05;
0000 ; }
0000 ;
0000 ; uint count60s=0; //60秒=1分
0000 ; uint count3600s=0; //60分钟=1时
0000 ; uint count1h=0; //60分钟=1时
0000 ;
0000 ;
0000 ;
0000 ;
0000 ; #pragma interrupt_handler timer1_ovf_isr:7
0000 ; void timer1_ovf_isr(void) ///1秒中断
0000 ; {
0000 ; TCNT1H=0xf0;
0000 ; TCNT1L=0xbe;
0000 ; if (count60s<60)
0000 ; {BuzzerShortON;
0000 ; count60s++;
0000 ; }
0000 ; if (count60s>60)
0000 ; {
0000 ; count60s=1;
0000 ; count3600s++;
0000 ; if (count3600s<60)
0000 ; {
0000 ; count3600s++;
0000 ; }
0000 ; if (count3600s>60)
0000 ; {
0000 ; count3600s=1;
0000 ; count1h++;
0000 ; if (count1h=7)
0000 ; {
0000 ; count1h=0;
0000 ; while(1)
0000 ; {
0000 ; BuzzerShortON;
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ; }
0000 ;
0000 ;
0000 ; #pragma interrupt_handler timer1_ovf_isr:7
0000 ; void timer1_ovf_isr(void) ///1秒中断
0000 ; {
0000 ; TCNT1H=0xf0;
0000 ; TCNT1L=0xbe;
0000 ; BuzzerShortON;
0000 ; if (count60s<60)
0000 ; {
0000 ; BuzzerShortON;
0000 ; count60s++;
0000 ; }
0000 ;
0000 ; }
0000 ; */
0000 ; void WDT_ON(void)
0000 ; {
0000 .dbline 121
0000 ; WDR(); //this prevents a timout on enabling
0000 A895 wdr
0002 .dbline 122
0002 ; WDTCR|=(1<<WDTOE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x1F; //特别注意这一条不是ICC生成的,是后来加上的。
0002 81B5 in R24,0x21
0004 8F61 ori R24,31
0006 81BD out 0x21,R24
0008 .dbline 123
0008 ; WDTCR&=(~(1<<WDTOE))|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);//WDTCR = 0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs
0008 81B5 in R24,0x21
000A 8F7E andi R24,239
000C 81BD out 0x21,R24
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbend
0010 .dbfunc e delay_1ms _delay_1ms fV
0010 ; i -> R16,R17
.even
0010 _delay_1ms::
0010 .dbline -1
0010 .dbline 127
0010 ; }
0010 ;
0010 ; void delay_1ms(void)//1ms延时函数
0010 ; {
0010 .dbline 129
0010 ; unsigned int i;
0010 ; for (i=0;i<150;i++)
0010 0027 clr R16
0012 1127 clr R17
0014 03C0 xjmp L6
0016 L3:
0016 .dbline 130
0016 A895 wdr
0018 L4:
0018 .dbline 129
0018 0F5F subi R16,255 ; offset = 1
001A 1F4F sbci R17,255
001C L6:
001C .dbline 129
001C 0639 cpi R16,150
001E E0E0 ldi R30,0
0020 1E07 cpc R17,R30
0022 C8F3 brlo L3
0024 .dbline -2
0024 L2:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbsym r i 16 i
0026 .dbend
0026 .dbfunc e delay_nms _delay_nms fV
0026 ; i -> R20,R21
0026 ; n -> R22,R23
.even
0026 _delay_nms::
0026 0E940000 xcall push_gset2
002A B801 movw R22,R16
002C .dbline -1
002C .dbline 134
002C ; WDR();
002C ; }
002C ;
002C ; void delay_nms(unsigned int n)//延时n毫秒
002C ; {
002C .dbline 136
002C ; unsigned int i;
002C ; for (i=0;i<n;i++)//执行n次1毫秒延时
002C 4427 clr R20
002E 5527 clr R21
0030 03C0 xjmp L11
0032 L8:
0032 .dbline 137
0032 .dbline 138
0032 EEDF xcall _delay_1ms
0034 .dbline 139
0034 L9:
0034 .dbline 136
0034 4F5F subi R20,255 ; offset = 1
0036 5F4F sbci R21,255
0038 L11:
0038 .dbline 136
0038 4617 cp R20,R22
003A 5707 cpc R21,R23
003C D0F3 brlo L8
003E .dbline 140
003E ; {
003E ; delay_1ms();
003E ; }
003E ; WDR();
003E A895 wdr
0040 .dbline -2
0040 L7:
0040 0E940000 xcall pop_gset2
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbsym r i 20 i
0046 .dbsym r n 22 i
0046 .dbend
0046 .dbfunc e LED_Run _LED_Run fV
0046 ; i -> R20,R21
.even
0046 _LED_Run::
0046 0E940000 xcall push_gset1
004A .dbline -1
004A .dbline 144
004A ; }
004A ;
004A ; void LED_Run(void)
004A ; {
004A .dbline 146
004A 45E0 ldi R20,5
004C 50E0 ldi R21,0
004E 25C0 xjmp L16
0050 L13:
0050 .dbline 146
0050 .dbline 146
0050 C398 cbi 0x18,3
0052 .dbline 146
0052 C29A sbi 0x18,2
0054 .dbline 146
0054 C19A sbi 0x18,1
0056 .dbline 146
0056 C09A sbi 0x18,0
0058 .dbline 146
0058 04E6 ldi R16,100
005A 10E0 ldi R17,0
005C E4DF xcall _delay_nms
005E .dbline 146
005E .dbline 146
005E C398 cbi 0x18,3
0060 .dbline 146
0060 C298 cbi 0x18,2
0062 .dbline 146
0062 C19A sbi 0x18,1
0064 .dbline 146
0064 C09A sbi 0x18,0
0066 .dbline 146
0066 04E6 ldi R16,100
0068 10E0 ldi R17,0
006A DDDF xcall _delay_nms
006C .dbline 146
006C .dbline 146
006C C298 cbi 0x18,2
006E .dbline 146
006E C39A sbi 0x18,3
0070 .dbline 146
0070 C19A sbi 0x18,1
0072 .dbline 146
0072 C098 cbi 0x18,0
0074 .dbline 146
0074 04E6 ldi R16,100
0076 10E0 ldi R17,0
0078 D6DF xcall _delay_nms
007A .dbline 146
007A .dbline 146
007A C098 cbi 0x18,0
007C .dbline 146
007C C29A sbi 0x18,2
007E .dbline 146
007E C198 cbi 0x18,1
0080 .dbline 146
0080 C39A sbi 0x18,3
0082 .dbline 146
0082 04E6 ldi R16,100
0084 10E0 ldi R17,0
0086 CFDF xcall _delay_nms
0088 .dbline 146
0088 .dbline 146
0088 C198 cbi 0x18,1
008A .dbline 146
008A C29A sbi 0x18,2
008C .dbline 146
008C C398 cbi 0x18,3
008E .dbline 146
008E C09A sbi 0x18,0
0090 .dbline 146
0090 04E6 ldi R16,100
0092 10E0 ldi R17,0
0094 C8DF xcall _delay_nms
0096 .dbline 146
0096 .dbline 146
0096 L14:
0096 .dbline 146
0096 4150 subi R20,1
0098 5040 sbci R21,0
009A L16:
009A .dbline 146
009A ; uint i;
009A ; for (i=5;i>0;i--){LED1;LED12;LED23;LED34;LED41;}
009A 4030 cpi R20,0
009C 4507 cpc R20,R21
009E C1F6 brne L13
00A0 X0:
00A0 .dbline 147
00A0 45E0 ldi R20,5
00A2 50E0 ldi R21,0
00A4 25C0 xjmp L20
00A6 L17:
00A6 .dbline 147
00A6 .dbline 147
00A6 C398 cbi 0x18,3
00A8 .dbline 147
00A8 C29A sbi 0x18,2
00AA .dbline 147
00AA C19A sbi 0x18,1
00AC .dbline 147
00AC C09A sbi 0x18,0
00AE .dbline 147
00AE 04E6 ldi R16,100
00B0 10E0 ldi R17,0
00B2 B9DF xcall _delay_nms
00B4 .dbline 147
00B4 .dbline 147
00B4 C398 cbi 0x18,3
00B6 .dbline 147
00B6 C29A sbi 0x18,2
00B8 .dbline 147
00B8 C198 cbi 0x18,1
00BA .dbline 147
00BA C09A sbi 0x18,0
00BC .dbline 147
00BC 04E6 ldi R16,100
00BE 10E0 ldi R17,0
00C0 B2DF xcall _delay_nms
00C2 .dbline 147
00C2 .dbline 147
00C2 C198 cbi 0x18,1
00C4 .dbline 147
00C4 C29A sbi 0x18,2
00C6 .dbline 147
00C6 C39A sbi 0x18,3
00C8 .dbline 147
00C8 C098 cbi 0x18,0
00CA .dbline 147
00CA 04E6 ldi R16,100
00CC 10E0 ldi R17,0
00CE ABDF xcall _delay_nms
00D0 .dbline 147
00D0 .dbline 147
00D0 C098 cbi 0x18,0
00D2 .dbline 147
00D2 C298 cbi 0x18,2
00D4 .dbline 147
00D4 C19A sbi 0x18,1
00D6 .dbline 147
00D6 C39A sbi 0x18,3
00D8 .dbline 147
00D8 04E6 ldi R16,100
00DA 10E0 ldi R17,0
00DC A4DF xcall _delay_nms
00DE .dbline 147
00DE .dbline 147
00DE C298 cbi 0x18,2
00E0 .dbline 147
00E0 C398 cbi 0x18,3
00E2 .dbline 147
00E2 C19A sbi 0x18,1
00E4 .dbline 147
00E4 C09A sbi 0x18,0
00E6 .dbline 147
00E6 04E6 ldi R16,100
00E8 10E0 ldi R17,0
00EA 9DDF xcall _delay_nms
00EC .dbline 147
00EC .dbline 147
00EC L18:
00EC .dbline 147
00EC 4150 subi R20,1
00EE 5040 sbci R21,0
00F0 L20:
00F0 .dbline 147
00F0 ; for (i=5;i>0;i--){LED1;LED14;LED43;LED32;LED21;}
00F0 4030 cpi R20,0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -