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

📄 ir_test.lis

📁 mega16_32实验板上的程序:mega16+LCD1602+遥控器输入
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 060C           ;   LCD_DATA_PORT|=data_temp&0xf0; //写高四位
 060C CB01              movw R24,R22
 060E 807F              andi R24,240
 0610 9070              andi R25,0
 0612 25B2              in R2,0x15
 0614 3324              clr R3
 0616 282A              or R2,R24
 0618 392A              or R3,R25
 061A 25BA              out 0x15,R2
 061C                   .dbline 86
 061C           ;   LCD_en_write();
 061C E1DF              xcall _LCD_en_write
 061E                   .dbline 87
 061E           ;   data_temp=data_temp<<4; 
 061E 660F              lsl R22
 0620 771F              rol R23
 0622 660F              lsl R22
 0624 771F              rol R23
 0626 660F              lsl R22
 0628 771F              rol R23
 062A 660F              lsl R22
 062C 771F              rol R23
 062E                   .dbline 88
 062E           ;   LCD_DATA_PORT&=0X0f;
 062E 85B3              in R24,0x15
 0630 8F70              andi R24,15
 0632 85BB              out 0x15,R24
 0634                   .dbline 89
 0634           ;   LCD_DATA_PORT|=data_temp&0xf0; //写低四位
 0634 CB01              movw R24,R22
 0636 807F              andi R24,240
 0638 9070              andi R25,0
 063A 25B2              in R2,0x15
 063C 3324              clr R3
 063E 282A              or R2,R24
 0640 392A              or R3,R25
 0642 25BA              out 0x15,R2
 0644                   .dbline 90
 0644           ;   LCD_en_write();
 0644 CDDF              xcall _LCD_en_write
 0646                   .dbline 91
 0646           ;  }
 0646 21C0              xjmp L110
 0648           L109:
 0648                   .dbline 93
 0648           ;  else
 0648           ;  {
 0648                   .dbline 94
 0648           ;   LCD_RS_PORT&=~LCD_RS; //RS=0
 0648 AA98              cbi 0x15,2
 064A                   .dbline 95
 064A           ;   LCD_DATA_PORT&=0X0f;
 064A 85B3              in R24,0x15
 064C 8F70              andi R24,15
 064E 85BB              out 0x15,R24
 0650                   .dbline 96
 0650           ;   LCD_DATA_PORT|=command_temp&0xf0; //写高四位
 0650 CA01              movw R24,R20
 0652 807F              andi R24,240
 0654 9070              andi R25,0
 0656 25B2              in R2,0x15
 0658 3324              clr R3
 065A 282A              or R2,R24
 065C 392A              or R3,R25
 065E 25BA              out 0x15,R2
 0660                   .dbline 97
 0660           ;   LCD_en_write();
 0660 BFDF              xcall _LCD_en_write
 0662                   .dbline 98
 0662           ;   command_temp=command_temp<<4;
 0662 440F              lsl R20
 0664 551F              rol R21
 0666 440F              lsl R20
 0668 551F              rol R21
 066A 440F              lsl R20
 066C 551F              rol R21
 066E 440F              lsl R20
 0670 551F              rol R21
 0672                   .dbline 99
 0672           ;   LCD_DATA_PORT&=0x0f;
 0672 85B3              in R24,0x15
 0674 8F70              andi R24,15
 0676 85BB              out 0x15,R24
 0678                   .dbline 100
 0678           ;   LCD_DATA_PORT|=command_temp&0xf0; //写低四位
 0678 CA01              movw R24,R20
 067A 807F              andi R24,240
 067C 9070              andi R25,0
 067E 25B2              in R2,0x15
 0680 3324              clr R3
 0682 282A              or R2,R24
 0684 392A              or R3,R25
 0686 25BA              out 0x15,R2
 0688                   .dbline 101
 0688           ;   LCD_en_write();
 0688 ABDF              xcall _LCD_en_write
 068A                   .dbline 102
 068A           ;  }
 068A           L110:
 068A                   .dbline -2
 068A           L108:
 068A                   .dbline 0 ; func end
 068A 0C940000          xjmp pop_xgsetF03C
 068E                   .dbsym r data_temp 22 i
 068E                   .dbsym r command_temp 20 i
 068E                   .dbsym r data 12 i
 068E                   .dbsym r command 10 i
 068E                   .dbend
 068E                   .dbfunc e clear _clear fV
 068E           ;              i -> R20
                        .even
 068E           _clear::
 068E 4A93              st -y,R20
 0690                   .dbline -1
 0690                   .dbline 108
 0690           ; }
 0690           ; /*-------------------------------------------------------------
 0690           ; 函数: 清屏lcd1602
 0690           ; ---------------------------------------------------------------*/
 0690           ; void clear(void)
 0690           ; {
 0690                   .dbline 110
 0690           ;  unsigned char i;
 0690           ;  LCD_set_xy(0,0);
 0690 2227              clr R18
 0692 0027              clr R16
 0694 93DF              xcall _LCD_set_xy
 0696                   .dbline 111
 0696           ;  for(i=0;i<16;i++)
 0696 4427              clr R20
 0698 06C0              xjmp L115
 069A           L112:
 069A                   .dbline 112
 069A           ;  LCD_write_char(0,' ');
 069A 20E2              ldi R18,32
 069C 30E0              ldi R19,0
 069E 0027              clr R16
 06A0 1127              clr R17
 06A2 A4DF              xcall _LCD_write_char
 06A4           L113:
 06A4                   .dbline 111
 06A4 4395              inc R20
 06A6           L115:
 06A6                   .dbline 111
 06A6 4031              cpi R20,16
 06A8 C0F3              brlo L112
 06AA           X105:
 06AA                   .dbline 113
 06AA           ;  LCD_set_xy(0,1);
 06AA 21E0              ldi R18,1
 06AC 0027              clr R16
 06AE 86DF              xcall _LCD_set_xy
 06B0                   .dbline 114
 06B0           ;  for(i=0;i<16;i++)
 06B0 4427              clr R20
 06B2 06C0              xjmp L119
 06B4           L116:
 06B4                   .dbline 115
 06B4           ;  LCD_write_char(0,' ');
 06B4 20E2              ldi R18,32
 06B6 30E0              ldi R19,0
 06B8 0027              clr R16
 06BA 1127              clr R17
 06BC 97DF              xcall _LCD_write_char
 06BE           L117:
 06BE                   .dbline 114
 06BE 4395              inc R20
 06C0           L119:
 06C0                   .dbline 114
 06C0 4031              cpi R20,16
 06C2 C0F3              brlo L116
 06C4           X106:
 06C4                   .dbline -2
 06C4           L111:
 06C4                   .dbline 0 ; func end
 06C4 4991              ld R20,y+
 06C6 0895              ret
 06C8                   .dbsym r i 20 c
 06C8                   .dbend
 06C8                   .dbfunc e LCD_write_string _LCD_write_string fV
 06C8           ;              s -> R20,R21
 06C8           ;              Y -> R12
 06C8           ;              X -> R10
                        .even
 06C8           _LCD_write_string::
 06C8 0E940000          xcall push_xgset303C
 06CC C22E              mov R12,R18
 06CE A02E              mov R10,R16
 06D0 4E81              ldd R20,y+6
 06D2 5F81              ldd R21,y+7
 06D4                   .dbline -1
 06D4                   .dbline 123
 06D4           ; }
 06D4           ; /*-------------------------------------------------------------
 06D4           ; 函数: 写字符串
 06D4           ; 参数:列---X=0~15,行---Y=0~1 写地址
 06D4           ;       s为所要写的字符串
 06D4           ; ---------------------------------------------------------------*/
 06D4           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) 
 06D4           ; {
 06D4                   .dbline 124
 06D4           ;  LCD_set_xy(X,Y);   
 06D4 2C2D              mov R18,R12
 06D6 0A2D              mov R16,R10
 06D8 71DF              xcall _LCD_set_xy
 06DA 08C0              xjmp L122
 06DC           L121:
 06DC                   .dbline 126
 06DC           ;  while(*s)  
 06DC           ;  {
 06DC                   .dbline 127
 06DC           ;   LCD_write_char(0,*s);
 06DC FA01              movw R30,R20
 06DE 2081              ldd R18,z+0
 06E0 3327              clr R19
 06E2 0027              clr R16
 06E4 1127              clr R17
 06E6 82DF              xcall _LCD_write_char
 06E8                   .dbline 128
 06E8           ;   s++;
 06E8 4F5F              subi R20,255  ; offset = 1
 06EA 5F4F              sbci R21,255
 06EC                   .dbline 129
 06EC           ;  }
 06EC           L122:
 06EC                   .dbline 125
 06EC FA01              movw R30,R20
 06EE 2080              ldd R2,z+0
 06F0 2220              tst R2
 06F2 A1F7              brne L121
 06F4           X107:
 06F4                   .dbline -2
 06F4           L120:
 06F4                   .dbline 0 ; func end
 06F4 0C940000          xjmp pop_xgset303C
 06F8                   .dbsym r s 20 pc
 06F8                   .dbsym r Y 12 c
 06F8                   .dbsym r X 10 c
 06F8                   .dbend
 06F8                   .dbfunc e LCD_write_data _LCD_write_data fV
 06F8           ;           data -> y+0
 06F8           ;              i -> R20
 06F8           ;            dat -> R14,R15
 06F8           ;              Y -> R12
 06F8           ;              X -> R10
                        .even
 06F8           _LCD_write_data::
 06F8 0E940000          xcall push_xgset30FC
 06FC C22E              mov R12,R18
 06FE A02E              mov R10,R16
 0700 2497              sbiw R28,4
 0702 EC84              ldd R14,y+12
 0704 FD84              ldd R15,y+13
 0706                   .dbline -1
 0706                   .dbline 138
 0706           ; }
 0706           ; 
 0706           ; /*-------------------------------------------------------------
 0706           ; 函数: 写数字
 0706           ; 参数:列---X=0~15,行---Y=0~1 写地址
 0706           ;       dat为所要写的数字
 0706           ; ---------------------------------------------------------------*/
 0706           ; void LCD_write_data(unsigned char X,unsigned char Y,int dat)
 0706           ; {
 0706                   .dbline 151
 0706           ;  //unsigned char fuhao;
 0706           ;  unsigned char data[4];
 0706           ;  unsigned char i;
 0706           ;   
 0706           ;  /*if(dat<0)
 0706           ;  {
 0706           ;   fuhao='-';
 0706           ;   dat=0-dat;
 0706           ;  }
 0706           ;  else
 0706           ;   fuhao=' ';
 0706           ;  data[0]=fuhao;*/
 0706           ;  data[0]=dat/1000+0x30; dat%=1000;
 0706 28EE              ldi R18,1000
 0708 33E0              ldi R19,3
 070A 8701              movw R16,R14
 070C 0E940000          xcall div16s
 0710 C801              movw R24,R16
 0712 C096              adiw R24,48
 0714 8883              std y+0,R24
 0716                   .dbline 151
 0716 28EE              ldi R18,1000
 0718 33E0              ldi R19,3
 071A 8701              movw R16,R14
 071C 0E940000          xcall mod16s
 0720 7801              movw R14,R16
 0722                   .dbline 152
 0722           ;  data[1]=dat/100+0x30;  dat%=100;
 0722 24E6              ldi R18,100
 0724 30E0              ldi R19,0
 0726 0E940000          xcall div16s
 072A C801              movw R24,R16
 072C C096              adiw R24,48
 072E 8983              std y+1,R24
 0730                   .dbline 152
 0730 24E6              ldi R18,100
 0732 30E0              ldi R19,0
 0734 8701              movw R16,R14
 0736 0E940000          xcall mod16s
 073A 7801              movw R14,R16
 073C                   .dbline 153
 073C           ;  data[2]=dat/10+0x30; 
 073C 2AE0              ldi R18,10
 073E 30E0              ldi R19,0
 0740 0E940000          xcall div16s
 0744 C801              movw R24,R16
 0746 C096              adiw R24,48
 0748 8A83              std y+2,R24
 074A                   .dbline 154
 074A           ;  data[3]=dat%10+0x30; 
 074A 2AE0              ldi R18,10
 074C 30E0              ldi R19,0
 074E 8701              movw R16,R14
 0750 0E940000          xcall mod16s
 0754 C801              movw R24,R16
 0756 C096              adiw R24,48
 0758 8B83              std y+3,R24
 075A                   .dbline 156
 075A           ;  
 075A           ;  LCD_set_xy(X,Y);
 075A 2C2D              mov R18,R12
 075C 0A2D              mov R16,R10
 075E 2EDF              xcall _LCD_set_xy
 0760                   .dbline 157
 0760           ;  for(i=0;i<4;i++)
 0760 4427              clr R20
 0762 0BC0              xjmp L131
 0764           L128:
 0764                   .dbline 158
 0764           ;   LCD_write_char(0,data[i]);
 0764 CE01              movw R24,R28
 0766 E42F              mov R30,R20
 0768 FF27              clr R31
 076A E80F              add R30,R24
 076C F91F              adc R31,R25
 076E 2081              ldd R18,z+0
 0770 3327              clr R19
 0772 0027              clr R16
 0774 1127              clr R17
 0776 3ADF              xcall _LCD_write_char
 0778           L129:
 0778                   .dbline 157
 0778 4395              inc R20
 077A           L131:
 077A                   .dbline 157
 077A 4430              cpi R20,4

⌨️ 快捷键说明

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