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

📄 main.lis

📁 AVR 红外接收源代码,对学习红外的人很有帮助
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\开发板\source\infrared\infrared_test\main.c
 0000                   .dbfunc e delay_us _delay_us fV
 0000           ;              i -> R20,R21
 0000           ;              n -> R16,R17
                        .even
 0000           _delay_us::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 22
 0002           ; /******************************************/
 0002           ; /*             北京MCU学习之家            */
 0002           ; /*            红外输入演示程序            */
 0002           ; /*             作者:白如冰                */
 0002           ; /*             2005年10月1日              */
 0002           ; /*  目标MCU:MEGA8   晶振:外部(EXT) 8MHZ   */
 0002           ; /******************************************/
 0002           ; //  1、使用WIN9X/WIN2000/XP的超级终端,进行通信调试。
 0002           ; //  2、通信波特率为9600(8位数据,无校验,1位停止位,无数据流控制)。
 0002           ; 
 0002           ; #include <iom8v.h>
 0002           ; #include <macros.h>
 0002           ; #include "infrared_test.h"
 0002           ; #define fosc 8000000 //晶振8MHZ
 0002           ; #define baud 9600      //波特率
 0002           ; #define buffer_max    75
 0002           ; 
 0002           ; extern void init_infr(void);
 0002           ; unsigned char uia_data[5];  //5位ASC码存储区
 0002           ; 
 0002           ; void delay_us(unsigned int n)
 0002           ; {
 0002                   .dbline 24
 0002 A801              movw R20,R16
 0004 02C0              rjmp L5
 0006           L2:
 0006                   .dbline 24
 0006           L3:
 0006                   .dbline 24
 0006 4150              subi R20,1
 0008 5040              sbci R21,0
 000A           L5:
 000A                   .dbline 24
 000A           ;   unsigned int i;
 000A           ;   for(i=n;i>0;i--);
 000A 4030              cpi R20,0
 000C 4507              cpc R20,R21
 000E D9F7              brne L2
 0010           X0:
 0010                   .dbline -2
 0010           L1:
 0010 00D0              rcall pop_gset1
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbsym r i 20 i
 0014                   .dbsym r n 16 i
 0014                   .dbend
 0014                   .dbfunc e delay_1ms _delay_1ms fV
 0014           ;              i -> R16,R17
                        .even
 0014           _delay_1ms::
 0014                   .dbline -1
 0014                   .dbline 28
 0014           ;   }
 0014           ;   
 0014           ; void delay_1ms(void)
 0014           ; { unsigned int i;
 0014                   .dbline 29
 0014           ;  for(i=1;i<(unsigned int)(1144-2);i++)
 0014 01E0              ldi R16,1
 0016 10E0              ldi R17,0
 0018 02C0              rjmp L10
 001A           L7:
 001A                   .dbline 30
 001A           L8:
 001A                   .dbline 29
 001A 0F5F              subi R16,255  ; offset = 1
 001C 1F4F              sbci R17,255
 001E           L10:
 001E                   .dbline 29
 001E 0637              cpi R16,118
 0020 E4E0              ldi R30,4
 0022 1E07              cpc R17,R30
 0024 D0F3              brlo L7
 0026                   .dbline -2
 0026           L6:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbsym r i 16 i
 0028                   .dbend
 0028                   .dbfunc e delay_ms _delay_ms fV
 0028           ;              i -> R20,R21
 0028           ;              n -> R22,R23
                        .even
 0028           _delay_ms::
 0028 00D0              rcall push_gset2
 002A B801              movw R22,R16
 002C                   .dbline -1
 002C                   .dbline 33
 002C           ;     ;
 002C           ; }
 002C           ; void delay_ms(unsigned int n)
 002C           ; {
 002C                   .dbline 34
 002C           ;  unsigned int i=0;
 002C 4427              clr R20
 002E 5527              clr R21
 0030 03C0              rjmp L13
 0032           L12:
 0032                   .dbline 36
 0032                   .dbline 36
 0032 F0DF              rcall _delay_1ms
 0034                   .dbline 37
 0034 4F5F              subi R20,255  ; offset = 1
 0036 5F4F              sbci R21,255
 0038                   .dbline 38
 0038           L13:
 0038                   .dbline 35
 0038           ;    while(i<n)
 0038 4617              cp R20,R22
 003A 5707              cpc R21,R23
 003C D0F3              brlo L12
 003E                   .dbline -2
 003E           L11:
 003E 00D0              rcall pop_gset2
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i 20 i
 0042                   .dbsym r n 22 i
 0042                   .dbend
 0042                   .dbfunc e uint_asc _uint_asc fpc
 0042           ;           temp -> R22,R23
 0042           ;            uia -> R20,R21
 0042           ;           data -> R10,R11
                        .even
 0042           _uint_asc::
 0042 00D0              rcall push_gset3
 0044 5801              movw R10,R16
 0046                   .dbline -1
 0046                   .dbline 42
 0046           ;    {delay_1ms();
 0046           ;     i++;
 0046           ;    }
 0046           ; }                                                                                                     
 0046           ; 
 0046           ; unsigned char *uint_asc(unsigned int data)  //字转换为5位ASC码
 0046           ; {
 0046                   .dbline 45
 0046           ;   unsigned char *uia;
 0046           ;   unsigned int temp;
 0046           ;   uia=uia_data;
 0046 40E0              ldi R20,<_uia_data
 0048 50E0              ldi R21,>_uia_data
 004A                   .dbline 47
 004A           ;   
 004A           ;   temp=data;
 004A B501              movw R22,R10
 004C                   .dbline 48
 004C           ;   uia+=4;
 004C 4C5F              subi R20,252  ; offset = 4
 004E 5F4F              sbci R21,255
 0050                   .dbline 49
 0050           ;   *uia--=temp%10+0x30;
 0050 1A01              movw R2,R20
 0052 4150              subi R20,1
 0054 5040              sbci R21,0
 0056 2AE0              ldi R18,10
 0058 30E0              ldi R19,0
 005A 8B01              movw R16,R22
 005C 00D0              rcall mod16u
 005E C801              movw R24,R16
 0060 C096              adiw R24,48
 0062 F101              movw R30,R2
 0064 8083              std z+0,R24
 0066                   .dbline 50
 0066           ;   temp=data;
 0066                   .dbline 51
 0066           ;   *uia--=(temp/10)%10+0x30;
 0066 1A01              movw R2,R20
 0068 4150              subi R20,1
 006A 5040              sbci R21,0
 006C 2AE0              ldi R18,10
 006E 30E0              ldi R19,0
 0070 8B01              movw R16,R22
 0072 00D0              rcall div16u
 0074 2AE0              ldi R18,10
 0076 30E0              ldi R19,0
 0078 00D0              rcall mod16u
 007A C801              movw R24,R16
 007C C096              adiw R24,48
 007E F101              movw R30,R2
 0080 8083              std z+0,R24
 0082                   .dbline 52
 0082           ;   temp=data;
 0082                   .dbline 53
 0082           ;   *uia--=(temp/100)%10+0x30;
 0082 1A01              movw R2,R20
 0084 4150              subi R20,1
 0086 5040              sbci R21,0
 0088 24E6              ldi R18,100
 008A 30E0              ldi R19,0
 008C 8B01              movw R16,R22
 008E 00D0              rcall div16u
 0090 2AE0              ldi R18,10
 0092 30E0              ldi R19,0
 0094 00D0              rcall mod16u
 0096 C801              movw R24,R16
 0098 C096              adiw R24,48
 009A F101              movw R30,R2
 009C 8083              std z+0,R24
 009E                   .dbline 54
 009E           ;   temp=data;
 009E                   .dbline 55
 009E           ;   *uia--=(temp/1000)%10+0x30;
 009E 1A01              movw R2,R20
 00A0 4150              subi R20,1
 00A2 5040              sbci R21,0
 00A4 28EE              ldi R18,1000
 00A6 33E0              ldi R19,3
 00A8 8B01              movw R16,R22
 00AA 00D0              rcall div16u
 00AC 2AE0              ldi R18,10
 00AE 30E0              ldi R19,0
 00B0 00D0              rcall mod16u
 00B2 C801              movw R24,R16
 00B4 C096              adiw R24,48
 00B6 F101              movw R30,R2
 00B8 8083              std z+0,R24
 00BA                   .dbline 56
 00BA           ;   *uia=temp/10000+0x30;
 00BA 20E1              ldi R18,10000
 00BC 37E2              ldi R19,39
 00BE 8B01              movw R16,R22
 00C0 00D0              rcall div16u
 00C2 C801              movw R24,R16
 00C4 C096              adiw R24,48
 00C6 FA01              movw R30,R20
 00C8 8083              std z+0,R24
 00CA                   .dbline 57
 00CA           ;   uia=uia_data;
 00CA 40E0              ldi R20,<_uia_data
 00CC 50E0              ldi R21,>_uia_data
 00CE                   .dbline 58
 00CE           ;   return(uia);
 00CE 8A01              movw R16,R20
 00D0                   .dbline -2
 00D0           L15:
 00D0 00D0              rcall pop_gset3
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbsym r temp 22 i
 00D4                   .dbsym r uia 20 pc
 00D4                   .dbsym r data 10 i
 00D4                   .dbend
 00D4                   .dbfunc e putchar _putchar fV
 00D4           ;              c -> R16
                        .even
 00D4           _putchar::
 00D4                   .dbline -1
 00D4                   .dbline 63
 00D4           ; }
 00D4           ; 
 00D4           ; /*            字符输出函数             */
 00D4           ; void putchar(unsigned char c)
 00D4           ;       {        
 00D4           L17:
 00D4                   .dbline 64
 00D4           L18:
 00D4                   .dbline 64
 00D4           ;      while (!(UCSRA&(1<<UDRE)));
 00D4 5D9B              sbis 0xb,5
 00D6 FECF              rjmp L17
 00D8                   .dbline 65
 00D8           ;        UDR=c;    
 00D8 0CB9              out 0xc,R16
 00DA                   .dbline -2
 00DA           L16:
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym r c 16 c
 00DC                   .dbend
 00DC                   .dbfunc e puts _puts fI
 00DC           ;              s -> R20,R21
                        .even
 00DC           _puts::
 00DC 00D0              rcall push_gset1
 00DE A801              movw R20,R16
 00E0                   .dbline -1
 00E0                   .dbline 70
 00E0           ;       }
 00E0           ; 
 00E0           ; /*                    字符串输出函数           */     
 00E0           ; int puts(char *s)
 00E0           ;       {
 00E0 05C0              rjmp L22
 00E2           L21:
 00E2                   .dbline 72
 00E2                   .dbline 73
 00E2 FA01              movw R30,R20
 00E4 0081              ldd R16,z+0
 00E6 F6DF              rcall _putchar
 00E8                   .dbline 74
 00E8 4F5F              subi R20,255  ; offset = 1
 00EA 5F4F              sbci R21,255
 00EC                   .dbline 75
 00EC           L22:
 00EC                   .dbline 71
 00EC           ;       while (*s)
 00EC FA01              movw R30,R20
 00EE 2080              ldd R2,z+0
 00F0 2220              tst R2
 00F2 B9F7              brne L21
 00F4                   .dbline 76
 00F4           ;               {
 00F4           ;               putchar(*s);
 00F4           ;               s++;
 00F4           ;               }       
 00F4           ;       return 1;
 00F4 01E0              ldi R16,1
 00F6 10E0              ldi R17,0
 00F8                   .dbline -2
 00F8           L20:
 00F8 00D0              rcall pop_gset1
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbsym r s 20 pc
 00FC                   .dbend
 00FC                   .dbfunc e puts_hh _puts_hh fV
 00FC           ;              s -> R20,R21
                        .even
 00FC           _puts_hh::
 00FC 00D0              rcall push_gset1
 00FE A801              movw R20,R16
 0100                   .dbline -1
 0100                   .dbline 80
 0100           ;       }
 0100           ; /*               含回车换行的字符串输出函数    */     
 0100           ; void puts_hh(char *s)
 0100           ;       {
 0100 05C0              rjmp L26
 0102           L25:
 0102                   .dbline 82
 0102                   .dbline 83

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -