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

📄 irremote.lis

📁 ICCAVR环境下
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module irremote.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\M16开发板实验教程\icc-avr\irremote/delay.h
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 10
 0000           ; /* 
 0000           ;     Title:    icc-avr irremote
 0000           ;     Author:   dushibiao
 0000           ;     Date:     2007 10 19
 0000           ;     Purpose:   control your pc use a ir remoter
 0000           ;     Frequency: internal 8M
 0000           ;     needed
 0000           ;     Software: icc-avr to compile
 0000           ;     needed
 0000           ;     Hardware: AVR mega16 BOARD
 0000                   .dbline 11
 0000           ;     Connect:  dushibiao@126.com
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay_nus _delay_nus fV
 0004           ;              i -> R20,R21
 0004           ;              n -> R22,R23
                        .even
 0004           _delay_nus::
 0004 0E940000          xcall push_gset2
 0008 B801              movw R22,R16
 000A                   .dbline -1
 000A                   .dbline 15
 000A           ; */
 000A           ; #include <iom16v.h>
 000A           ; #include <macros.h>
 000A           ; #include "shumaguan.h"
 000A                   .dbline 16
 000A           ; 
 000A 4427              clr R20
 000C 5527              clr R21
 000E                   .dbline 17
 000E           ; #define  IR      2             //PB2,irfrade receive line
 000E 03C0              xjmp L6
 0010           L3:
 0010                   .dbline 18
 0010 F7DF              xcall _delay_1us
 0012           L4:
 0012                   .dbline 17
 0012 4F5F              subi R20,255  ; offset = 1
 0014 5F4F              sbci R21,255
 0016           L6:
 0016                   .dbline 17
 0016 4617              cp R20,R22
 0018 5707              cpc R21,R23
 001A D0F3              brlo L3
 001C                   .dbline -2
 001C           L2:
 001C 0E940000          xcall pop_gset2
 0020                   .dbline 0 ; func end
 0020 0895              ret
 0022                   .dbsym r i 20 i
 0022                   .dbsym r n 22 i
 0022                   .dbend
 0022                   .dbfunc e delay_1ms _delay_1ms fV
 0022           ;              i -> R16,R17
                        .even
 0022           _delay_1ms::
 0022                   .dbline -1
 0022                   .dbline 22
 0022           ; #define PIN_RXD                       0       //PD0   RXD
 0022           ; #define PIN_TXD                       1       //PD1   TXD
 0022           ; #define BAUDRATE        9600  //baudrate
 0022           ; #define F_CPU                 8000000 //the frequency of the global clock
 0022           ; 
 0022                   .dbline 24
 0022 0027              clr R16
 0024 1127              clr R17
 0026 02C0              xjmp L11
 0028           L8:
 0028                   .dbline 24
 0028           L9:
 0028                   .dbline 24
 0028 0F5F              subi R16,255  ; offset = 1
 002A 1F4F              sbci R17,255
 002C           L11:
 002C                   .dbline 24
 002C           ; 
 002C           ; volatile unsigned char flag,code;
 002C 0437              cpi R16,116
 002E E4E0              ldi R30,4
 0030 1E07              cpc R17,R30
 0032 D0F3              brlo L8
 0034                   .dbline -2
 0034           L7:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 16 i
 0036                   .dbend
 0036                   .dbfunc e delay_nms _delay_nms fV
 0036           ;              i -> R20,R21
 0036           ;              n -> R22,R23
                        .even
 0036           _delay_nms::
 0036 0E940000          xcall push_gset2
 003A B801              movw R22,R16
 003C                   .dbline -1
 003C                   .dbline 28
 003C           ; 
 003C           ; 
 003C           ; void delay0_9ms(void)
 003C           ; {
 003C                   .dbline 29
 003C           ;     delay_nus(510);
 003C 4427              clr R20
 003E 5527              clr R21
 0040                   .dbline 30
 0040           ; }
 0040 03C0              xjmp L16
 0042           L13:
 0042                   .dbline 31
 0042 EFDF              xcall _delay_1ms
 0044           L14:
 0044                   .dbline 30
 0044 4F5F              subi R20,255  ; offset = 1
 0046 5F4F              sbci R21,255
 0048           L16:
 0048                   .dbline 30
 0048 4617              cp R20,R22
 004A 5707              cpc R21,R23
 004C D0F3              brlo L13
 004E                   .dbline -2
 004E           L12:
 004E 0E940000          xcall pop_gset2
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbsym r i 20 i
 0054                   .dbsym r n 22 i
 0054                   .dbend
                        .area lit(rom, con, rel)
 0000           _discode::
 0000 C0F9              .byte 192,249
 0002 A4B0              .byte 164,176
 0004 9992              .byte 153,146
 0006 82F8              .byte 130,248
 0008 8090              .byte 128,144
 000A 8883              .byte 136,131
 000C C6A1              .byte 198,161
 000E 868E              .byte 134,142
 0010 BF                .byte 191
 0011                   .dbfile D:\M16开发板实验教程\icc-avr\irremote/shumaguan.h
 0011                   .dbsym e discode _discode A[17:17]kc
                        .area text(rom, con, rel)
 0054                   .dbfile D:\M16开发板实验教程\icc-avr\irremote/shumaguan.h
 0054                   .dbfunc e display _display fV
 0054           ;            num -> R20
                        .even
 0054           _display::
 0054 0E940000          xcall push_gset1
 0058 402F              mov R20,R16
 005A                   .dbline -1
 005A                   .dbline 21
 005A                   .dbline 22
 005A C098              cbi 0x18,0
 005C                   .dbline 24
 005C 80E0              ldi R24,<_discode
 005E 90E0              ldi R25,>_discode
 0060 E42F              mov R30,R20
 0062 FF27              clr R31
 0064 F595              asr R31
 0066 E795              ror R30
 0068 F595              asr R31
 006A E795              ror R30
 006C F595              asr R31
 006E E795              ror R30
 0070 F595              asr R31
 0072 E795              ror R30
 0074 E80F              add R30,R24
 0076 F91F              adc R31,R25
 0078 E491              lpm R30,Z
 007A EBBB              out 0x1b,R30
 007C                   .dbline 25
 007C 05E0              ldi R16,5
 007E 10E0              ldi R17,0
 0080 DADF              xcall _delay_nms
 0082                   .dbline 26
 0082 C09A              sbi 0x18,0
 0084                   .dbline 28
 0084 C198              cbi 0x18,1
 0086                   .dbline 29
 0086 20E1              ldi R18,16
 0088 30E0              ldi R19,0
 008A 042F              mov R16,R20
 008C 1127              clr R17
 008E 0E940000          xcall mod16s
 0092 F801              movw R30,R16
 0094 80E0              ldi R24,<_discode
 0096 90E0              ldi R25,>_discode
 0098 E80F              add R30,R24
 009A F91F              adc R31,R25
 009C E491              lpm R30,Z
 009E EBBB              out 0x1b,R30
 00A0                   .dbline 30
 00A0 05E0              ldi R16,5
 00A2 10E0              ldi R17,0
 00A4 C8DF              xcall _delay_nms
 00A6                   .dbline 31
 00A6           ; 
 00A6 C19A              sbi 0x18,1
 00A8                   .dbline -2
 00A8           L17:
 00A8 0E940000          xcall pop_gset1
 00AC                   .dbline 0 ; func end
 00AC 0895              ret
 00AE                   .dbsym r num 20 c
 00AE                   .dbend
 00AE                   .dbfunc e displayerror _displayerror fV
                        .even
 00AE           _displayerror::
 00AE                   .dbline -1
 00AE                   .dbline 38
 00AE           ; //4.5ms
 00AE           ; void delay4_5ms(void)
 00AE           ; {
 00AE           ;    delay_nms(4);
 00AE           ;    delay_nus(320);
 00AE           ; }
 00AE           ; /*---------------------------------------------------------------------------
 00AE                   .dbline 39
 00AE           ; function      send an unsigned char to the uart
 00AE C098              cbi 0x18,0
 00B0                   .dbline 41
 00B0           ; ----------------------------------------------------------------------------*/
 00B0           ; void put_c(unsigned char c) //发送采用查询方式
 00B0 E0E0              ldi R30,<_discode+16
 00B2 F0E0              ldi R31,>_discode+16
 00B4 E491              lpm R30,Z
 00B6 EBBB              out 0x1b,R30
 00B8                   .dbline 42
 00B8           ; {
 00B8 05E0              ldi R16,5
 00BA 10E0              ldi R17,0
 00BC BCDF              xcall _delay_nms
 00BE                   .dbline 43
 00BE           ;       while( !(UCSRA & (1<<UDRE)) );        //wait until the uart is empty
 00BE C09A              sbi 0x18,0
 00C0                   .dbline 45
 00C0           ;       UDR=c;                                  //write data to uart
 00C0           ; }
 00C0 C198              cbi 0x18,1
 00C2                   .dbline 46
 00C2           ; /*---------------------------------------------------------------------------
 00C2 E0E0              ldi R30,<_discode+16
 00C4 F0E0              ldi R31,>_discode+16
 00C6 E491              lpm R30,Z
 00C8 EBBB              out 0x1b,R30
 00CA                   .dbline 47
 00CA           ; fuction     initialize the uart  unit
 00CA 05E0              ldi R16,5
 00CC 10E0              ldi R17,0
 00CE B3DF              xcall _delay_nms
 00D0                   .dbline 48
 00D0           ; ----------------------------------------------------------------------------*/
 00D0 C19A              sbi 0x18,1
 00D2                   .dbline -2
 00D2           L18:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbend
 00D4                   .dbfile D:\M16开发板实验教程\icc-avr\irremote\irremote.c
 00D4                   .dbfunc e delay0_9ms _delay0_9ms fV
                        .even
 00D4           _delay0_9ms::
 00D4                   .dbline -1
 00D4                   .dbline 28
 00D4                   .dbline 29
 00D4 0EEF              ldi R16,510
 00D6 11E0              ldi R17,1
 00D8 95DF              xcall _delay_nus
 00DA                   .dbline -2
 00DA           L21:
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbend
 00DC                   .dbfunc e delay4_5ms _delay4_5ms fV
                        .even
 00DC           _delay4_5ms::
 00DC                   .dbline -1
 00DC                   .dbline 34
 00DC                   .dbline 35
 00DC 04E0              ldi R16,4
 00DE 10E0              ldi R17,0
 00E0 AADF              xcall _delay_nms
 00E2                   .dbline 36
 00E2 00E4              ldi R16,320
 00E4 11E0              ldi R17,1
 00E6 8EDF              xcall _delay_nus
 00E8                   .dbline -2
 00E8           L22:
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA                   .dbend
 00EA                   .dbfunc e put_c _put_c fV
 00EA           ;              c -> R16
                        .even
 00EA           _put_c::
 00EA                   .dbline -1
 00EA                   .dbline 42
 00EA           L24:
 00EA                   .dbline 43
 00EA           L25:
 00EA                   .dbline 43
 00EA 5D9B              sbis 0xb,5
 00EC FECF              rjmp L24
 00EE                   .dbline 44
 00EE 0CB9              out 0xc,R16
 00F0                   .dbline -2
 00F0           L23:
 00F0                   .dbline 0 ; func end
 00F0 0895              ret
 00F2                   .dbsym r c 16 c
 00F2                   .dbend
 00F2                   .dbfunc e init_USART _init_USART fV
                        .even
 00F2           _init_USART::
 00F2                   .dbline -1
 00F2                   .dbline 50
 00F2           ; void init_USART(void)//USART 初始化
 00F2           ; {
 00F2                   .dbline 53
 00F2           ; 
 00F2           ;     //USART 9600 8, n,1  PC上位机软件(超级终端等)也要设成同样的设置才能通讯
 00F2           ;     UCSRC = (1<<URSEL) | 0x06;
 00F2 86E8              ldi R24,134
 00F4 80BD              out 0x20,R24
 00F6                   .dbline 69
 00F6           ;     //异步,8位数据,无奇偶校验,一个停止位,无倍速
 00F6           ;     /*
 00F6           ;     UBRRH与UCSRC共用I/O 地址。因此访问该地址时需注意以下问题。
 00F6           ;     写访问
 00F6           ;     当在该地址执行写访问时, USART 寄存器选择位(URSEL)控制被写入的寄存器。
 00F6           ;     若URSEL为0,对UBRRH值更新;若URSEL为1,对UCSRC设置更新
 00F6           ;     
 00F6           ;     读访问
 00F6           ;     对UBRRH 或UCSRC 寄存器的读访问则较为复杂。但在大多数应用中,基本不需要读这些寄存器
 00F6           ;     
 00F6           ;     
 00F6           ;     没有UBRR这个16位寄存器,因为UBRRL(0x09)/UBRRH(0x20)的地址不连续,而且UBRRH跟UCSRC共用地址
 00F6           ;     */
 00F6           ;     
 00F6           ;     //U2X=0时的公式计算
 00F6           ;     UBRRL= (F_CPU/BAUDRATE/16-1)%256;
 00F6 83E3              ldi R24,51
 00F8 89B9              out 0x9,R24
 00FA                   .dbline 70
 00FA           ;     UBRRH= (F_CPU/BAUDRATE/16-1)/256;
 00FA 2224              clr R2
 00FC 20BC              out 0x20,R2
 00FE                   .dbline 77
 00FE           ;     //U2X=1时的公式计算
 00FE           ;     //UBRRL= (F_CPU/BAUDRATE/8-1)%256;
 00FE           ;     //UBRRH= (F_CPU/BAUDRATE/8-1)/256;
 00FE           ;     //也可根据数据手册的[波特率设置的例子]查得
 00FE           ;     //UBRRL = 0x2F; //set baud rate lo
 00FE           ;     //UBRRH = 0x00; //set baud rate hi
 00FE           ;     UCSRA = 0x00;                     //无倍速
 00FE 2BB8              out 0xb,R2
 0100                   .dbline 78
 0100           ;     UCSRB = (1<<RXEN)|(1<<TXEN);
 0100 88E1              ldi R24,24
 0102 8AB9              out 0xa,R24
 0104                   .dbline -2
 0104           L27:
 0104                   .dbline 0 ; func end

⌨️ 快捷键说明

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