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

📄 1602.lst

📁 红外解码,并带1602显示!希望能给大家提供帮助!
💻 LST
字号:
C51 COMPILER V7.06   1602                                                                  07/23/2007 20:16:49 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: E:\单片机\kcai\安装后\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<reg52.h>
   2          #include"lcd.h"
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          uchar finish;//解码标志位
   6          uchar address1,address2,data1,data2;//地址位,反地址位,数据位,反数据位
   7          sbit P32=P3^2;
   8          uchar  code tab1[]="the lcd_1602 is ";
   9          uchar  code tab2[]="made by xiao yu ";
  10          uchar tab3[]="     jie ma     ";
  11          uchar tab4[]="   0000.0000    ";
  12          uchar code number[]="0123456789abcdef.";
  13          uchar tt[32];//32位码
  14          uchar d[9];//数据缓冲
  15          uchar led[8];//数据缓冲
  16          sbit P10=P1^0;//右灯
  17          sbit P11=P1^1;//前灯
  18          sbit P12=P1^2;//后灯
  19          sbit P13=P1^3;//左灯
  20          sbit P14=P1^4;
  21          sbit P15=P1^5;
  22          sbit P16=P1^6;
  23          sbit P17=P1^7;
  24          void display(void);
  25          void count(void);
  26          void add(void);
  27          
  28          void main(void)
  29          {
  30   1       uchar i,j; 
  31   1       /*lcd的初始部分*/
  32   1       P1=0xff;
  33   1       P1=0x0f;//停止
  34   1       init_lcd();//初始化
  35   1       clear_lcd();//清屏
  36   1       gotoxy(1,0);//显示第一行
  37   1       for(i=0;i<16;i++){write_lcd_data(tab1[i]);delay(200);}
  38   1       //write_lcd_command(0x0e);//光标显示,字符不闪烁
  39   1       gotoxy(2,0);//显示第二行
  40   1       for(i=0;i<16;i++){write_lcd_data(tab2[i]);delay(200);}
  41   1       write_lcd_command(0x0e);//光标显示,字符不闪烁
  42   1       write_lcd_command(0x02);//光标回到左上角
  43   1       for(i=0;i<32;i++)
  44   1       {
  45   2        if(i==16)
  46   2        {gotoxy(2,0); //光标到第二行0列
  47   3        } 
  48   2        write_lcd_command(0x14);//光标移一位 
  49   2        delay(200);  
  50   2       }  
  51   1       gotoxy(2,15);//光标停到15的位置
  52   1       delay(1000);//延时1s
  53   1       //write_lcd_command(0x01); //清屏
  54   1       gotoxy(1,0); //显示第一行
  55   1       for(i=0;i<16;i++) write_lcd_data(tab3[i]); 
C51 COMPILER V7.06   1602                                                                  07/23/2007 20:16:49 PAGE 2   

  56   1       gotoxy(2,0); //显示第二行 
  57   1       for(i=0;i<16;i++) write_lcd_data(tab4[i]);
  58   1       write_lcd_command(0x0c);//关光标
  59   1       
  60   1       
  61   1       /*解码程序*/
  62   1      
  63   1       TMOD=0x01;
  64   1       TH0=0;TL0=0;
  65   1       EX0=1; //开外部中断0
  66   1       //ET0=1;
  67   1       IT0=1;//下降沿产生中断
  68   1       EA=1;
  69   1       TR0=0;//定时器0关闭
  70   1       while(1)
  71   1       {
  72   2        if(finish==1)
  73   2        {
  74   3         finish=0;
  75   3         add();
  76   3        }
  77   2       count();
  78   2       display();
  79   2       gotoxy(2,3);
  80   2       for(j=0;j<9;j++)
  81   2       {write_lcd_data(d[j]);}
  82   2       if((data1==0x00)&&(data2==0xff)){P1=0xfd;} //前
  83   2       if((data1==0x03)&&(data2==0xfc)){P1=0xd7;}//左 P14可以为任意值
  84   2       if((data1==0x14)&&(data2==0xeb)){P1=0x7e;}//右 P16可以为任意值
  85   2       if((data1==0x17)&&(data2==0xe8)){P1=0xab;}//后
  86   2       if((data1==0x15)&&(data2==0xea)){P1=0x0f;}//停
  87   2       }
  88   1      }
  89          
  90          void int0(void) interrupt 0 //外部中断0
  91          {
  92   1       uchar i,t;
  93   1       EX0=0;//关外部中断0
  94   1       TR0=1;//定时器0开始记数
  95   1       while(P32==0);
  96   1       TR0=0;//定时器0关
  97   1       t=(TH0*256+TL0)/1000;//低电平9 MS
  98   1       TH0=0;TL0=0;
  99   1       if(t==8)
 100   1      {
 101   2       TR0=1;
 102   2       while(P32==1);
 103   2       TR0=0;
 104   2       t=(TH0*256+TL0)/1000;//低电平3 MS
 105   2       TH0=0;TL0=0;
 106   2       if(t==3)
 107   2       {
 108   3        for(i=0;i<32;i++)
 109   3        {
 110   4         TR0=1;
 111   4         while(P32==0);//等待
 112   4         TR0=0;
 113   4         t=(TH0*256+TL0)/1000;
 114   4         TH0=0;TL0=0;
 115   4         if(t==0)  //0跟1的低电平的时间相同
 116   4        { 
 117   5         TR0=1;//定时器0开
C51 COMPILER V7.06   1602                                                                  07/23/2007 20:16:49 PAGE 3   

 118   5         while(P32==1);
 119   5         TR0=0;//定时器0关
 120   5         //while(P32==1);//{if(TH0>10) break;}//如果高电平的时间大于2.5ms,跳出while 循环
 121   5         //TR0=0;//定时器0关
 122   5         t=(TH0*256+TL0)/1000;
 123   5         TH0=0;TL0=0;//循环一次重新付初值
 124   5         tt[i]=t;
 125   5        }
 126   4       } 
 127   3       }
 128   2       }
 129   1       finish=1;
 130   1       EX0=1;//外部中断开
 131   1      }
 132           
 133          
 134          void add(void)  //转换成10进制数子函数
 135          {
 136   1       uchar i;
 137   1       address1=0;
 138   1       address2=0;
 139   1       data1=0;
 140   1       data2=0;
 141   1       for(i=0;i<8;i++)   //位
 142   1       {
 143   2        address1=(tt[i]<<7)|(address1>>1);
 144   2        address2=(tt[8+i]<<7)|(address2>>1);
 145   2        data1=(tt[16+i]<<7)|(data1>>1);
 146   2        data2=(tt[24+i]<<7)|(data2>>1);
 147   2       }
 148   1      }
 149          
 150          void count(void)
 151          {
 152   1       led[7]=(0xf0&address1)>>4;//取高四位
 153   1       led[6]=0x0f&address1;   //低四位
 154   1       led[5]=(0xf0&address2)>>4;
 155   1       led[4]=0x0f&address2;
 156   1       led[3]=(0xf0&data1)>>4;
 157   1       led[2]=0x0f&data1;
 158   1       led[1]=(0xf0&data2)>>4;
 159   1       led[0]=data2&0x0f;
 160   1      }
 161          
 162          void display(void)  //显示
 163          {
 164   1       d[0]=number[led[7]];
 165   1       d[1]=number[led[6]];
 166   1       d[2]=number[led[5]];
 167   1       d[3]=number[led[4]];
 168   1       d[4]=number[16];
 169   1       d[5]=number[led[3]];
 170   1       d[6]=number[led[2]];
 171   1       d[7]=number[led[1]];
 172   1       d[8]=number[led[0]];
 173   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    825    ----
   CONSTANT SIZE    =     52    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.06   1602                                                                  07/23/2007 20:16:49 PAGE 4   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =     88       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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