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

📄 cah.lst

📁 与一个51单片机实验板的上位机通信程序
💻 LST
字号:
C51 COMPILER V7.50   CAH                                                                   10/02/2007 09:46:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CAH
OBJECT MODULE PLACED IN Cah.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE Cah.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"reg51.h"
   2          #include<LCD1602.h> 
   3          #include "lcd1602.c"
   4          #include "hardware.h"
   5          sbit P1_7= P1^7;
   6          unsigned int c=0;
   7          unsigned char code_Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
   8                                    0x80,0x90};
   9          unsigned char mark=0;
  10          unsigned int swit=0;
  11          int i,k,m,led=0,lednum=0,lcd=0;
  12          char x=0x40,l=0;
  13          
  14          init_rs232(void)/*初始化串行端口*/
  15          {
  16   1      SCON=0X50;      //设定串行接口工作模式1,允许接收数据
  17   1      TMOD=0X20;      //设定计时器1 工作模式2
  18   1      TH1=0XFD;       //设定波特率为9600BPS(用在普通89C51上,11.0592MHZ)
  19   1      TR1=1;          //启动计时器1开始计数
  20   1      //TI=1;         //发送准备好
  21   1      }
  22          
  23          void delay(unsigned int  n)  //延时
  24          {
  25   1        unsigned int  i=0;
  26   1        unsigned char y;
  27   1                 
  28   1        for(i=0; i<n; i++);
  29   1        for(y=0; y<0; y++);
  30   1      
  31   1      }
  32          
  33          void kk(){
  34   1      
  35   1       if(c==255){
  36   2              mark=0;
  37   2              led=0;
  38   2              swit=0;
  39   2              P1=0xff;
  40   2              P0=0xff;
  41   2              
  42   2              return ;
  43   2       }
  44   1       if(mark==0){
  45   2              mark=c;
  46   2              if(mark==4){
  47   3                      P1_7=~P1_7;
  48   3              }
  49   2              return ;
  50   2       }else if(mark==1){//LED模式
  51   2              switch(c){
  52   3                  case 0: P0=0xff;  break;   //LED1亮
  53   3                              case 1: P0=0xfe;  break;   //LED2亮
  54   3                              case 2: P0=0xfd;  break;   //LED3亮
  55   3                              case 3: P0=0xfb;  break;   //LED4亮
C51 COMPILER V7.50   CAH                                                                   10/02/2007 09:46:49 PAGE 2   

  56   3                              case 4: P0=0xf7;  break;   //LED5亮
  57   3                              case 5: P0=0xef;  break;   //LED8亮
  58   3                              case 6: P0=0xdf;  break;   //LED6亮
  59   3                              case 7: P0=0xbf;  break;   //LED7亮
  60   3                              case 8: P0=0x7f;  break;   //LED8亮
  61   3                  case 9: P0=0xff;  break;   //全灭
  62   3                  case 10: P0=0;    break;   //全亮 
  63   3                              default: break;
  64   3                              }
  65   2       }else if(mark==2){//数码管模式
  66   2              if(led<2){
  67   3                      swit=c;
  68   3                      led=2;
  69   3              }else{
  70   3                      led=1;
  71   3                      swit=c*200+swit;
  72   3              }
  73   2      
  74   2       }else if(mark==3){//液晶屏模式
  75   2              // lcd=1;
  76   2       }else if(mark==4){//蜂鸣
  77   2              P1_7=~P1_7;
  78   2       }
  79   1      
  80   1      }
  81          serial() interrupt 4 using 1  //串口中断程序
  82          {
  83   1      
  84   1      if(RI==1)  //接收中断
  85   1        {
  86   2        RI=0;    //清标志位
  87   2        c=SBUF;  //把接收到的数据发到缓冲区,引起发送中断,把收到的数据发回去
  88   2         kk();  
  89   2        }
  90   1      if(TI==1) //发送中断
  91   1        {
  92   2        TI=0;  //清标志
  93   2        //SBUF=c; //C的数据装到缓冲区
  94   2        }
  95   1      }
  96          
  97          
  98          
  99          void main()
 100          {
 101   1      
 102   1      P0=0xff;
 103   1      P1=0Xff;
 104   1      init_rs232();
 105   1      IE=0x90;
 106   1      //LCD_cls();
 107   1      //LCD_initial();
 108   1      mark=0;
 109   1              led=0;
 110   1              swit=0;
 111   1              P1=0xff;
 112   1              P0=0xff;
 113   1      
 114   1      while(1)
 115   1       {
 116   2      
 117   2      if(mark==2 && led>0){
C51 COMPILER V7.50   CAH                                                                   10/02/2007 09:46:49 PAGE 3   

 118   3      
 119   3               P0=code_Tab[swit%10];
 120   3                P1=0xf7;
 121   3              delay(300);
 122   3              
 123   3              P1=0xff;
 124   3                P0=code_Tab[(swit/10) % 10];
 125   3              P1=0xfb;
 126   3              delay(300);
 127   3              P1=0xff;
 128   3               
 129   3                P0=code_Tab[(swit/100) % 10];
 130   3              P1=0xfd;
 131   3              delay(300);
 132   3              P1=0xff; 
 133   3                P0=code_Tab[(swit/1000) % 10];
 134   3              P1=0xfe;
 135   3              delay(300);
 136   3              P1=0xff;        
 137   3      }else if(lcd ==1){
 138   3      
 139   3         // LCD_printc('i');
 140   3          //return;
 141   3      }
 142   2        }
 143   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    623    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     29       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 + -