?? hongwai.lis
字號(hào):
.module hongwai.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator.27F5F4061F03467\桌面\實(shí)驗(yàn)板紅外avr解碼\hongwai.c
0000 .dbfunc e delay_nus _delay_nus fV
0000 ; i -> R20,R21
0000 ; n -> R16,R17
.even
0000 _delay_nus::
0000 4A93 st -y,R20
0002 5A93 st -y,R21
0004 .dbline -1
0004 .dbline 12
0004 ; //ICC-AVR application builder : 2008-8-7 8:30:21
0004 ; // Target : M8515
0004 ; // Crystal: 4.0000Mhz
0004 ; #include <iom8515v.h>//和單片機(jī)類型相對(duì)應(yīng)的頭文件,選擇Atmega8515做實(shí)驗(yàn);
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #define DQ PD2
0004 ; #define HW (PIND&(1<<DQ)) //數(shù)據(jù)的狀態(tài)
0004 ; unsigned char IRCode[3],IRCON,flag;
0004 ; void delay_nus(unsigned int n)//n微秒延時(shí)函數(shù)
0004 ; {
0004 .dbline 14
0004 ; unsigned int i;
0004 ; for (i=0;i<n;i++)
0004 4427 clr R20
0006 5527 clr R21
0008 03C0 rjmp L5
000A L2:
000A .dbline 15
000A ; {
000A .dbline 16
000A ; asm("nop");
000A 0000 nop
000C .dbline 17
000C ; }
000C L3:
000C .dbline 14
000C 4F5F subi R20,255 ; offset = 1
000E 5F4F sbci R21,255
0010 L5:
0010 .dbline 14
0010 4017 cp R20,R16
0012 5107 cpc R21,R17
0014 D0F3 brlo L2
0016 X0:
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 5991 ld R21,y+
0018 4991 ld R20,y+
001A 0895 ret
001C .dbsym r i 20 i
001C .dbsym r n 16 i
001C .dbend
001C .dbfunc e delay_nms _delay_nms fV
001C ; i -> R20,R21
001C ; n -> R10,R11
.even
001C _delay_nms::
001C 00D0 rcall push_xgset300C
001E 5801 movw R10,R16
0020 .dbline -1
0020 .dbline 20
0020 ; }
0020 ; void delay_nms(unsigned int n)//n毫秒延時(shí)函數(shù)
0020 ; {
0020 .dbline 22
0020 ; unsigned int i;
0020 ; for (i=0;i<n;i++) //執(zhí)行n次1毫秒延時(shí)
0020 4427 clr R20
0022 5527 clr R21
0024 05C0 rjmp L10
0026 L7:
0026 .dbline 23
0026 ; delay_nus(10);
0026 0AE0 ldi R16,10
0028 10E0 ldi R17,0
002A EADF rcall _delay_nus
002C L8:
002C .dbline 22
002C 4F5F subi R20,255 ; offset = 1
002E 5F4F sbci R21,255
0030 L10:
0030 .dbline 22
0030 4A15 cp R20,R10
0032 5B05 cpc R21,R11
0034 C0F3 brlo L7
0036 X1:
0036 .dbline -2
0036 L6:
0036 .dbline 0 ; func end
0036 00C0 rjmp pop_xgset300C
0038 .dbsym r i 20 i
0038 .dbsym r n 10 i
0038 .dbend
0038 .dbfunc e uart0_init _uart0_init fV
.even
0038 _uart0_init::
0038 .dbline -1
0038 .dbline 27
0038 ; }
0038 ; /************************* UART 發(fā)送數(shù)據(jù)函數(shù)*********************************************************/
0038 ; void uart0_init(void)
0038 ; {
0038 .dbline 28
0038 ; UCSRB = 0x00; //disable while setting baud rate
0038 2224 clr R2
003A 2AB8 out 0xa,R2
003C .dbline 29
003C ; UCSRA = 0x00;
003C 2BB8 out 0xb,R2
003E .dbline 30
003E ; UCSRC = BIT(URSEL) | 0x26;
003E 86EA ldi R24,166
0040 80BD out 0x20,R24
0042 .dbline 31
0042 ; UBRRL = 0x33; //set baud rate lo
0042 83E3 ldi R24,51
0044 89B9 out 0x9,R24
0046 .dbline 32
0046 ; UBRRH = 0x00; //set baud rate hi
0046 20BC out 0x20,R2
0048 .dbline 33
0048 ; UCSRB = 0x18;
0048 88E1 ldi R24,24
004A 8AB9 out 0xa,R24
004C .dbline -2
004C L11:
004C .dbline 0 ; func end
004C 0895 ret
004E .dbend
004E .dbfunc e sendchar _sendchar fV
004E ; num -> R16
.even
004E _sendchar::
004E .dbline -1
004E .dbline 36
004E ; }
004E ; void sendchar(uchar num)
004E ; {
004E .dbline 37
004E ; UDR=num;
004E 0CB9 out 0xc,R16
0050 L13:
0050 .dbline 38
0050 ; while(!(UCSRA&(1<<TXC)));
0050 L14:
0050 .dbline 38
0050 5E9B sbis 0xb,6
0052 FECF rjmp L13
0054 X2:
0054 .dbline 39
0054 ; UCSRA |= (1<<TXC);
0054 5E9A sbi 0xb,6
0056 .dbline -2
0056 L12:
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r num 16 c
0058 .dbend
0058 .dbfunc e panduan _panduan fV
.even
0058 _panduan::
0058 .dbline -1
0058 .dbline 43
0058 ; }
0058 ;
0058 ; void panduan(void)
0058 ; {
0058 .dbline 44
0058 ; IRCode[IRCON]<<=1; //每讀一次放入變量中的二進(jìn)制的一個(gè)位,每次左移一位
0058 80E0 ldi R24,<_IRCode
005A 90E0 ldi R25,>_IRCode
005C 20900100 lds R2,_IRCON
0060 3324 clr R3
0062 280E add R2,R24
0064 391E adc R3,R25
0066 F101 movw R30,R2
0068 2080 ldd R2,z+0
006A 220C lsl R2
006C 2082 std z+0,R2
006E .dbline 45
006E ; if(!HW) delay_nms(42); //延時(shí)1107us 44
006E 8299 sbic 0x10,2
0070 04C0 rjmp L17
0072 X3:
0072 .dbline 45
0072 0AE2 ldi R16,42
0074 10E0 ldi R17,0
0076 D2DF rcall _delay_nms
0078 0EC0 rjmp L18
007A L17:
007A .dbline 47
007A ; else
007A ; {
007A .dbline 48
007A ; IRCode[IRCON]|=0x01; //左移后最后一位寫入 1
007A 80E0 ldi R24,<_IRCode
007C 90E0 ldi R25,>_IRCode
007E 20900100 lds R2,_IRCON
0082 3324 clr R3
0084 280E add R2,R24
0086 391E adc R3,R25
0088 F101 movw R30,R2
008A 8081 ldd R24,z+0
008C 8160 ori R24,1
008E 8083 std z+0,R24
0090 .dbline 49
0090 ; delay_nms(89); //延時(shí)2207us 88
0090 09E5 ldi R16,89
0092 10E0 ldi R17,0
0094 C3DF rcall _delay_nms
0096 .dbline 50
0096 ; }
0096 L18:
0096 .dbline 51
0096 ; flag++;
0096 80910000 lds R24,_flag
009A 8F5F subi R24,255 ; addi 1
009C 80930000 sts _flag,R24
00A0 .dbline 52
00A0 ; if(flag==8)
00A0 8830 cpi R24,8
00A2 61F4 brne L19
00A4 X4:
00A4 .dbline 53
00A4 ; {
00A4 .dbline 54
00A4 ; flag=0; //8為填滿一個(gè)數(shù)組,計(jì)數(shù)清零
00A4 2224 clr R2
00A6 20920000 sts _flag,R2
00AA .dbline 55
00AA ; IRCON++; //填滿一個(gè)字節(jié),指向下一個(gè)變量
00AA 80910100 lds R24,_IRCON
00AE 8F5F subi R24,255 ; addi 1
00B0 80930100 sts _IRCON,R24
00B4 .dbline 56
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -