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

📄 ir_test.lis

📁 无线遥控器的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 04CE 90930300          sts _ir_num+1,R25
 04D2 80930200          sts _ir_num,R24
 04D6                   .dbline 101
 04D6 30C0              xjmp L44
 04D8           L67:
 04D8                   .dbline 102
 04D8           ;       case 0x89:  ir_num=21;break;
 04D8 85E1              ldi R24,21
 04DA 90E0              ldi R25,0
 04DC 90930300          sts _ir_num+1,R25
 04E0 80930200          sts _ir_num,R24
 04E4                   .dbline 102
 04E4 29C0              xjmp L44
 04E6           L68:
 04E6                   .dbline 103
 04E6           ;       case 0xda:  ir_num=22;break;
 04E6 86E1              ldi R24,22
 04E8 90E0              ldi R25,0
 04EA 90930300          sts _ir_num+1,R25
 04EE 80930200          sts _ir_num,R24
 04F2                   .dbline 103
 04F2 22C0              xjmp L44
 04F4           L69:
 04F4                   .dbline 104
 04F4           ;       case 0x5a:  ir_num=23;break;
 04F4 87E1              ldi R24,23
 04F6 90E0              ldi R25,0
 04F8 90930300          sts _ir_num+1,R25
 04FC 80930200          sts _ir_num,R24
 0500                   .dbline 104
 0500 1BC0              xjmp L44
 0502           L70:
 0502                   .dbline 105
 0502           ;       case 0xde:  ir_num=24;break;
 0502 88E1              ldi R24,24
 0504 90E0              ldi R25,0
 0506 90930300          sts _ir_num+1,R25
 050A 80930200          sts _ir_num,R24
 050E                   .dbline 105
 050E 14C0              xjmp L44
 0510           L71:
 0510                   .dbline 106
 0510           ;       case 0x9e:  ir_num=25;break;
 0510 89E1              ldi R24,25
 0512 90E0              ldi R25,0
 0514 90930300          sts _ir_num+1,R25
 0518 80930200          sts _ir_num,R24
 051C                   .dbline 106
 051C 0DC0              xjmp L44
 051E           L72:
 051E                   .dbline 107
 051E           ;       case 0xb9:  ir_num=26;break;
 051E 8AE1              ldi R24,26
 0520 90E0              ldi R25,0
 0522 90930300          sts _ir_num+1,R25
 0526 80930200          sts _ir_num,R24
 052A                   .dbline 107
 052A 06C0              xjmp L44
 052C           L73:
 052C                   .dbline 108
 052C           ;       case 0x38:  ir_num=27;break;
 052C 8BE1              ldi R24,27
 052E 90E0              ldi R25,0
 0530 90930300          sts _ir_num+1,R25
 0534 80930200          sts _ir_num,R24
 0538                   .dbline 108
 0538                   .dbline 109
 0538           ;       default:  break;
 0538           L44:
 0538                   .dbline 111
 0538           ;    }
 0538           ;    LCD_write_data(10,0,operate_code);
 0538 20900300          lds R2,_operate_code
 053C 3324              clr R3
 053E 3982              std y+1,R3
 0540 2882              std y+0,R2
 0542 2227              clr R18
 0544 3327              clr R19
 0546 0AE0              ldi R16,10
 0548 10E0              ldi R17,0
 054A D6D0              xcall _LCD_write_data
 054C                   .dbline 112
 054C           ;    if(ir_num<28)
 054C 80910200          lds R24,_ir_num
 0550 90910300          lds R25,_ir_num+1
 0554 8C31              cpi R24,28
 0556 E0E0              ldi R30,0
 0558 9E07              cpc R25,R30
 055A 20F4              brsh L101
 055C           X65:
 055C                   .dbline 113
 055C           ;    {
 055C                   .dbline 114
 055C           ;     codebegin=0;
 055C 2224              clr R2
 055E 20920400          sts _codebegin,R2
 0562                   .dbline 115
 0562           ;       spk();
 0562 78DD              xcall _spk
 0564                   .dbline 116
 0564           ;    }
 0564           L101:
 0564                   .dbline 117
 0564           ;    ir_rx_complete_flag=0;
 0564 2224              clr R2
 0566 20920000          sts _ir_rx_complete_flag,R2
 056A                   .dbline 118
 056A           ;    bitcnt=0;
 056A 20920100          sts _bitcnt,R2
 056E                   .dbline 119
 056E           ;    operate_code=0;
 056E 20920300          sts _operate_code,R2
 0572                   .dbline 120
 0572           ;    user_code=0;          
 0572 20920200          sts _user_code,R2
 0576                   .dbline 121
 0576           ;   }
 0576           L41:
 0576                   .dbline 122
 0576           ;  }
 0576           L39:
 0576                   .dbline -2
 0576           L38:
 0576                   .dbline 0 ; func end
 0576 2296              adiw R28,2
 0578 5991              ld R21,y+
 057A 4991              ld R20,y+
 057C 0895              ret
 057E                   .dbend
 057E                   .dbfile D:\mega16_32实验板资料\ICCAVR源程序\遥控器\lcd1602.h
 057E                   .dbfunc e LCD_init _LCD_init fV
                        .even
 057E           _LCD_init::
 057E                   .dbline -1
 057E                   .dbline 34
 057E           ; /*-------------------------------------------
 057E           ;    RS----------PC2
 057E           ;    RW----------GND
 057E           ;    EN----------PC3
 057E           ;    D4-D7-------PC4-PC7
 057E           ; ---------------------------------------------*/
 057E           ; //定义MCU与LCD的接口 
 057E           ; #define LCD_EN_PORT   PORTC
 057E           ; #define LCD_EN_DDR    DDRC
 057E           ; #define LCD_RS_PORT   PORTC
 057E           ; #define LCD_RS_DDR    DDRC
 057E           ; #define LCD_DATA_PORT PORTC
 057E           ; #define LCD_DATA_DDR  DDRC
 057E           ; #define LCD_DATA_PIN  PINC
 057E           ; #define LCD_EN        0x08   //portc3 out
 057E           ; #define LCD_RS        0x04   //portc2 out
 057E           ; #define LCD_DATA      0xf0 //portc4/5/6/7 out
 057E           ; 
 057E           ; /*----------------------------------------------------------
 057E           ; Public function prototypes
 057E           ; ----------------------------------------------------------*/
 057E           ; void LCD_init(void);
 057E           ; void LCD_en_write(void);
 057E           ; void clear(void);
 057E           ; void LCD_write_char(unsigned command,unsigned data);
 057E           ; void LCD_set_xy(unsigned char x, unsigned char y);
 057E           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
 057E           ; void LCD_write_data(unsigned char X,unsigned char Y,int dat);
 057E           ; 
 057E           ; /*------------------------------------------------------------
 057E           ; 函数: lcd1602口线初始化和液晶初始化
 057E           ; -------------------------------------------------------------*/
 057E           ; void LCD_init(void) //液晶初始化
 057E           ; {
 057E                   .dbline 35
 057E           ;  LCD_DATA_DDR|=LCD_DATA;
 057E 84B3              in R24,0x14
 0580 806F              ori R24,240
 0582 84BB              out 0x14,R24
 0584                   .dbline 36
 0584           ;  LCD_EN_DDR|=LCD_EN;
 0584 A39A              sbi 0x14,3
 0586                   .dbline 37
 0586           ;  LCD_RS_DDR|=LCD_RS;
 0586 A29A              sbi 0x14,2
 0588                   .dbline 38
 0588           ;  delay_ms(15);
 0588 0FE0              ldi R16,15
 058A 10E0              ldi R17,0
 058C 54DD              xcall _delay_ms
 058E                   .dbline 39
 058E           ;  LCD_write_char(0x28,0); //4位显示
 058E 2227              clr R18
 0590 3327              clr R19
 0592 08E2              ldi R16,40
 0594 10E0              ldi R17,0
 0596 2AD0              xcall _LCD_write_char
 0598                   .dbline 40
 0598           ;  delay_ms(15);
 0598 0FE0              ldi R16,15
 059A 10E0              ldi R17,0
 059C 4CDD              xcall _delay_ms
 059E                   .dbline 41
 059E           ;  LCD_write_char(0x0c,0); //显示开
 059E 2227              clr R18
 05A0 3327              clr R19
 05A2 0CE0              ldi R16,12
 05A4 10E0              ldi R17,0
 05A6 22D0              xcall _LCD_write_char
 05A8                   .dbline 42
 05A8           ;  delay_ms(15);
 05A8 0FE0              ldi R16,15
 05AA 10E0              ldi R17,0
 05AC 44DD              xcall _delay_ms
 05AE                   .dbline 43
 05AE           ;  LCD_write_char(0x01,0); //清屏
 05AE 2227              clr R18
 05B0 3327              clr R19
 05B2 01E0              ldi R16,1
 05B4 10E0              ldi R17,0
 05B6 1AD0              xcall _LCD_write_char
 05B8                   .dbline 44
 05B8           ;  clear();
 05B8 6AD0              xcall _clear
 05BA                   .dbline -2
 05BA           L103:
 05BA                   .dbline 0 ; func end
 05BA 0895              ret
 05BC                   .dbend
 05BC                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 05BC           ;        address -> R20
 05BC           ;              y -> R10
 05BC           ;              x -> R22
                        .even
 05BC           _LCD_set_xy::
 05BC 0E940000          xcall push_xgsetF00C
 05C0 A22E              mov R10,R18
 05C2 602F              mov R22,R16
 05C4                   .dbline -1
 05C4                   .dbline 53
 05C4           ; }
 05C4           ; 
 05C4           ; /*------------------------------------------------------------
 05C4           ; 函数: 设置显示地址
 05C4           ; para: x---the display address of a line limit: 0---15
 05C4           ;       y---the display line limit 0 or 1 
 05C4           ; --------------------------------------------------------------*/
 05C4           ; void LCD_set_xy(unsigned char x, unsigned char y) //写地址函数
 05C4           ; {
 05C4                   .dbline 55
 05C4           ;   unsigned char address;
 05C4           ;   if(y ==0) 
 05C4 AA20              tst R10
 05C6 19F4              brne L105
 05C8           X103:
 05C8                   .dbline 56
 05C8           ;    address=0x80+x; //the first line
 05C8 462F              mov R20,R22
 05CA 4058              subi R20,128    ; addi 128
 05CC 02C0              xjmp L106
 05CE           L105:
 05CE                   .dbline 58
 05CE           ;   else 
 05CE           ;    address=0xc0+x; //the second line
 05CE 462F              mov R20,R22
 05D0 4054              subi R20,64    ; addi 192
 05D2           L106:
 05D2                   .dbline 59
 05D2           ;   LCD_write_char(address,0);
 05D2 2227              clr R18
 05D4 3327              clr R19
 05D6 042F              mov R16,R20
 05D8 1127              clr R17
 05DA 08D0              xcall _LCD_write_char
 05DC                   .dbline -2
 05DC           L104:
 05DC                   .dbline 0 ; func end
 05DC 0C940000          xjmp pop_xgsetF00C
 05E0                   .dbsym r address 20 c
 05E0                   .dbsym r y 10 c
 05E0                   .dbsym r x 22 c
 05E0                   .dbend
 05E0                   .dbfunc e LCD_en_write _LCD_en_write fV
                        .even
 05E0           _LCD_en_write::
 05E0                   .dbline -1
 05E0                   .dbline 65
 05E0           ; }
 05E0           ; /*-------------------------------------------------------------
 05E0           ; 函数: lcd1602使能
 05E0           ; *--------------------------------------------------------------*/
 05E0           ; void LCD_en_write(void) //液晶使能
 05E0           ; { 
 05E0                   .dbline 66
 05E0           ;  LCD_EN_PORT|=LCD_EN;
 05E0 AB9A              sbi 0x15,3
 05E2                   .dbline 67
 05E2           ;  delay_us(5);
 05E2 05E0              ldi R16,5
 05E4 10E0              ldi R17,0
 05E6 0EDD              xcall _delay_us
 05E8                   .dbline 68
 05E8           ;  LCD_EN_PORT&=~LCD_EN;
 05E8 AB98              cbi 0x15,3
 05EA                   .dbline -2
 05EA           L107:
 05EA                   .dbline 0 ; func end
 05EA 0895              ret
 05EC                   .dbend
 05EC                   .dbfunc e LCD_write_char _LCD_write_char fV
 05EC           ;      data_temp -> R22,R23
 05EC           ;   command_temp -> R20,R21
 05EC           ;           data -> R12,R13
 05EC           ;        command -> R10,R11
                        .even
 05EC           _LCD_write_char::
 05EC 0E940000          xcall push_xgsetF03C
 05F0 6901              movw R12,R18
 05F2 5801              movw R10,R16
 05F4                   .dbline -1
 05F4                   .dbline 76
 05F4           ; }
 05F4           ; /*------------------------------------------------------------
 05F4           ; 函数: 写命令或数据到lcd1602
 05F4           ; 参数:command: 0---写数据, 1---写命令
 05F4           ;       data: 所要写的命令或数据
 05F4           ; *-------------------------------------------------------------*/
 05F4           ; void LCD_write_char(unsigned command,unsigned data) 
 05F4           ; {
 05F4                   .dbline 78
 05F4           ;  unsigned command_temp,data_temp;
 05F4           ;  command_temp=command;
 05F4 A501              movw R20,R10
 05F6                   .dbline 79
 05F6           ;  data_temp=data;
 05F6 B601              movw R22,R12
 05F8                   .dbline 80
 05F8           ;  delay_us(25);
 05F8 09E1              ldi R16,25
 05FA 10E0              ldi R17,0
 05FC 03DD              xcall _delay_us
 05FE                   .dbline 81
 05FE           ;  if(command==0)
 05FE 4030              cpi R20,0
 0600 4507              cpc R20,R21
 0602 11F5              brne L109
 0604           X104:
 0604                   .dbline 82
 0604           ;  {
 0604                   .dbline 83
 0604           ;   LCD_RS_PORT|=LCD_RS; //RS=1
 0604 AA9A              sbi 0x15,2
 0606                   .dbline 84
 0606           ;   LCD_DATA_PORT&=0X0f;
 0606 85B3              in R24,0x15
 0608 8F70              andi R24,15
 060A 85BB              out 0x15,R24
 060C                   .dbline 85

⌨️ 快捷键说明

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