?? led.lis
字號:
.module LED.c
.area text(rom, con, rel)
0000 .dbfile D:/icc/include/delay.h
0000 .dbfunc e delay_nus _delay_nus fV
0000 ; time -> R16,R17
.even
0000 _delay_nus::
0000 .dbline -1
0000 .dbline 33
0000 ;
0000 ; #include <iom16v.h> //包含單片機(jī)型號頭文件
0000 ; #include <macros.h> //包含"位"操作頭文件
0000 ; #include <delay.h> //包含延時(shí)頭文件
0000 ; #include <AVR_XQV12.h> //包含通用函數(shù)及宏定義頭文件
0000 ; /*******************************************************/
0000 ; /****** 函數(shù)名稱: Scan_Int_Key() ******/
0000 ; /****** 功 能: 掃描INT0、INT1按鍵,使鍵值改變******/
0000 ; /****** 參 數(shù): 無 ******/
0000 ; /****** 返回值 : 無 ******/
0000 ; /*******************************************************/
0000 ; void Scan_Int_Key(void)
0000 ; {
0000 ; if(KEY0==0) //判斷是否有鍵按下
0000 ; {
0000 ; delay_nms(10); //延時(shí)去抖
0000 ; if(KEY0==0) //再次判斷是否有鍵按下
0000 ; {
0000 ; while(KEY0==0); //等待按鍵釋放
0000 ; Key_Number++; //鍵值加1
0000 ; if(Key_Number>2)
0000 ; Key_Number=2;
0000 ; }
0000 ; }
0000 ; if(KEY1==0) //判斷是否有鍵按下
0000 ; {
0000 ; delay_nms(10); //延時(shí)去抖
0000 ; if(KEY1==0) //再次判斷是否有鍵按下
0000 ; {
0000 ; while(KEY1==0); //等待按鍵釋放
0000 ; Key_Number--; //鍵值減1
0000 ; if(Key_Number>2)
0000 ; Key_Number=0;
0000 09C0 xjmp L3
0002 L2:
0002 .dbline 35
0002 .dbline 36
0002 0000 nop
0004 .dbline 36
0004 0000 nop
0006 .dbline 36
0006 0000 nop
0008 .dbline 36
0008 0000 nop
000A .dbline 36
000A 0000 nop
000C .dbline 36
000C 0000 nop
000E .dbline 36
000E 0000 nop
0010 .dbline 37
0010 0150 subi R16,1
0012 1040 sbci R17,0
0014 .dbline 38
0014 L3:
0014 .dbline 34
0014 ; }
0014 0030 cpi R16,0
0016 0107 cpc R16,R17
0018 A1F7 brne L2
001A X0:
001A .dbline -2
001A L1:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r time 16 i
001C .dbend
001C .dbfunc e delay_nms _delay_nms fV
001C ; i -> R20,R21
001C ; time -> R16,R17
.even
001C _delay_nms::
001C 0E940000 xcall push_gset1
0020 .dbline -1
0020 .dbline 41
0020 ; }
0020 ; }
0020 ;
0020 ; /*******************************************************/
0020 ; /****** 函數(shù)名稱: main() ******/
0020 ; /****** 功 能: 流水燈、按鍵INT0、INT1改變顯示方式**/
0020 ; /****** 參 數(shù): 無 ******/
0020 0BC0 xjmp L7
0022 L6:
0022 .dbline 44
0022 ; /****** 返回值 : 無 ******/
0022 ; /*******************************************************/
0022 ; void main(void)
0022 .dbline 45
0022 4427 clr R20
0024 5527 clr R21
0026 02C0 xjmp L12
0028 L9:
0028 .dbline 45
0028 L10:
0028 .dbline 45
0028 4F5F subi R20,255 ; offset = 1
002A 5F4F sbci R21,255
002C L12:
002C .dbline 45
002C 4C32 cpi R20,44
0030 5E07 cpc R21,R30
0032 D0F3 brlo L9
0034 .dbline 46
0034 0150 subi R16,1
0036 1040 sbci R17,0
0038 .dbline 47
0038 L7:
0038 .dbline 43
0038 0030 cpi R16,0
003A 0107 cpc R16,R17
003C 91F7 brne L6
003E X1:
003E .dbline -2
003E L5:
003E 0E940000 xcall pop_gset1
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r i 20 i
0044 .dbsym r time 16 i
0044 .dbend
.area code(ram, con, rel)
0000 .dbfile D:/icc/include/delay.h
.area lit(rom, con, rel)
0000 _SMG_Conver::
0000 3F06 .byte 63,6
0002 5B4F .byte 91,'O
0004 666D .byte 'f,'m
0006 7D07 .byte 125,7
0008 7F6F .byte 127,'o
000A 777C .byte 'w,124
000C 395E .byte 57,94
000E 7971 .byte 'y,'q
0010 0040 .byte 0,64
0012 .dbfile D:/icc/include/AVR_XQV12.h
0012 .dbsym e SMG_Conver _SMG_Conver A[18:18]kc
.area data(ram, con, rel)
0000 .dbfile D:/icc/include/AVR_XQV12.h
.area text(rom, con, rel)
0044 .dbfile D:/icc/include/AVR_XQV12.h
0044 .dbfunc e Scan_Key _Scan_Key fc
0044 ; i -> R20
.even
0044 _Scan_Key::
0044 0E940000 xcall push_gset1
0048 .dbline -1
0048 .dbline 126
0048 ; {
0048 ; unsigned char i;
0048 ; CPU_Init(); //初始化CPU
0048 ; En_Led(); //使能LED
0048 ; while(1)
0048 ; {
0048 ; switch(Key_Number) //選擇LED掃描方式
0048 ; {
0048 ; case 0:
0048 ; while(1)
0048 ; {
0048 ; for(i=0;i<8;i++)
0048 ; {
0048 ; LED=0xff; //LED全部熄滅
0048 ; LED&=~BIT(i); //點(diǎn)亮相應(yīng)位LED
0048 ; delay_nms(100); //延時(shí)大約100毫秒
0048 ; Scan_Int_Key(); //查詢是否有按鍵按下
0048 ; if(Key_Number!=0)
0048 ; break; //如果鍵值改變退出
0048 ; }
0048 ; if(Key_Number!=0)
0048 ; break;
0048 ; for(i=9;i>1;i--)
0048 ; {
0048 ; LED=0xff; //LED全部熄滅
0048 ; LED&=~BIT(i-2); //點(diǎn)亮相應(yīng)位LED
0048 ; delay_nms(100); //延時(shí)大約100毫秒
0048 ; Scan_Int_Key(); //查詢是否有按鍵按下
0048 ; if(Key_Number!=0)
0048 ; break; //如果鍵值改變退出
0048 ; }
0048 ; if(Key_Number!=0)
0048 ; break;
0048 ; }
0048 ; break;
0048 ; case 1:
0048 ; while(1)
0048 ; {
0048 ; for(i=0;i<8;i++)
0048 ; {
0048 ; LED=0xff; //LED全部熄滅
0048 ; LED&=~BIT(i); //點(diǎn)亮相應(yīng)位LED
0048 ; delay_nms(50); //延時(shí)大約50毫秒
0048 ; Scan_Int_Key(); //查詢是否有按鍵按下
0048 ; if(Key_Number!=1)
0048 ; break; //如果鍵值改變退出
0048 ; }
0048 ; if(Key_Number!=1)
0048 ; break;
0048 ; }
0048 ; break;
0048 ; case 2:
0048 ; while(1)
0048 ; {
0048 ; for(i=9;i>1;i--)
0048 ; {
0048 ; LED=0xff; //LED全部熄滅
0048 ; LED&=~BIT(i-2); //點(diǎn)亮相應(yīng)位LED
0048 ; delay_nms(50); //延時(shí)大約50毫秒
0048 ; Scan_Int_Key(); //查詢是否有按鍵按下
0048 ; if(Key_Number!=2)
0048 ; break; //如果鍵值改變退出
0048 ; }
0048 ; if(Key_Number!=2)
0048 ; break;
0048 ; }
0048 ; break;
0048 ; }
0048 ;
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 ; }
0048 .dbline 128
0048 ; }
0048 ; }
0048 2224 clr R2
004A 25BA out 0x15,R2
004C .dbline 129
004C ; }
004C 80EF ldi R24,240
004E 84BB out 0x14,R24
0050 .dbline 130
0050 ; }
0050 8FE0 ldi R24,15
0052 85BB out 0x15,R24
0054 .dbline 131
0054 ; }
0054 01E0 ldi R16,1
0056 10E0 ldi R17,0
0058 D3DF xcall _delay_nus
005A .dbline 132
005A ; }
005A 43B3 in R20,0x13
005C 4F70 andi R20,15
005E .dbline 133
005E ; }
005E 4F30 cpi R20,15
0060 B1F0 breq L14
0062 .dbline 134
0062 ; }
0062 .dbline 135
0062 ; }
0062 2224 clr R2
0064 25BA out 0x15,R2
0066 .dbline 136
0066 ; }
0066 8FE0 ldi R24,15
0068 84BB out 0x14,R24
006A .dbline 137
006A ; }
006A 80EF ldi R24,240
006C 85BB out 0x15,R24
006E .dbline 138
006E ; }
006E 0AE0 ldi R16,10
0070 10E0 ldi R17,0
0072 C6DF xcall _delay_nus
0074 .dbline 139
0074 ; }
0074 83B3 in R24,0x13
0076 807F andi R24,240
0078 803F cpi R24,240
007A 49F0 breq L16
007C .dbline 140
007C ; }
007C .dbline 141
007C ; }
007C 83B3 in R24,0x13
007E 807F andi R24,240
0080 480F add R20,R24
0082 L18:
0082 .dbline 142
0082 L19:
0082 .dbline 142
0082 ; }
0082 83B3 in R24,0x13
0084 807F andi R24,240
0086 803F cpi R24,240
0088 E1F7 brne L18
008A .dbline 143
008A ; }
008A 042F mov R16,R20
008C 01C0 xjmp L13
008E L16:
008E .dbline 145
008E ; }
008E ; }
008E L14:
008E .dbline 146
008E ; }
008E 0027 clr R16
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -