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

📄 main.lst

📁 基于51单片机实现UART通信 SPI通信 和IIC通信
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: D:\ElectronicTools\KeilC51\C51\BIN\C51.EXE C_H\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\main.lst) O
                    -BJECT(main.obj)

line level    source

   1          #include        "Includes.h"
   2           
   3           unsigned char datTem[2]={0x00,0x00};      //温度值储存  datTem[1]高8位  datTem[0]低8位
   4           unsigned char IIC_Adress=0;             //AT24C04的内部地址
   5           unsigned char  key=0;                          //键盘扫描键值
   6           unsigned char uart_receive_date=0;     //串口接收数据
   7          
   8           unsigned char code uart_transmit[]={"uart transmit"};
   9           unsigned char code spi_transmit[]={"SPI transmit"};
  10          
  11           void send_char_uart( unsigned char date); //串口发送
  12           void com_init();    //串口初始化
  13          /*********************LCD初始化后显示"hello"****************************************/
  14          void  hello(void)                                                   
  15          {  
  16   1          unsigned  char X[15]={"Hello all right"},a=0x80,i;
  17   1                  WriteCommandLCM(0x01,1);
  18   1                  for(i=0;i<15;i++,a++){
  19   2                                         display_lcm(X[i],a);
  20   2                                         Delay_Xms(5); Delay_Xms(5);
  21   2                                        }
  22   1                  for(i=0;i<200;i++){
  23   2                                      Delay_Xms(5); Delay_Xms(5);
  24   2                                     }
  25   1                  WriteCommandLCM(0x01,1);
  26   1      }
  27          /***************显示温度************/
  28          void  temp_view(unsigned char *ddate)  
  29           {
  30   1         unsigned int  temp1=0,temp0=0,a,b,c,g,h,i,j,z;
  31   1         if((ddate[0]==0xFF)&&(ddate[1]==0xFF)){ ddate[0]=0;ddate[1]=0;}
  32   1         z=ddate[1]&0xF0;
  33   1          if(z>0)                                                  //正负温度符号判断显示
  34   1              display_lcm('-',0xc0);
  35   1          else  
  36   1              display_lcm('+',0xc0);
  37   1              if(z==0){                                                                               //正温度处理
  38   2                   temp1= ((ddate[1]&0x0F)<<4)+((ddate[0]&0xF0)>>4);
  39   2                   temp0=(ddate[0]&0x0F)*625;
  40   2                        }
  41   1          else {                                                                                                         //负温度处理
  42   2                     temp1= (((~ddate[1])&0x0F)<<4)+(((~ddate[0]+8)&0xF0)>>4);
  43   2                 temp0=((~ddate[0]+1)&0x0F)*625;
  44   2                        }
  45   1          a=(temp1%1000)/100;
  46   1            display_lcm(a+'0',0xc1);
  47   1          b=(temp1%100)/10;
  48   1            display_lcm(b+'0',0xc2);
  49   1          c=(temp1%10)/1;
  50   1            display_lcm(c+'0',0xc3); 
  51   1                 
  52   1            display_lcm('.',0xc4);    // 显示小数点
  53   1      
  54   1          g=(temp0%10000)/1000;
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 2   

  55   1            display_lcm(g+'0',0xc5); 
  56   1          h=(temp0%1000)/100;
  57   1            display_lcm(h+'0',0xc6); 
  58   1          i=(temp0%100)/10;
  59   1            display_lcm(i+'0',0xc7); 
  60   1          j=(temp0%10)/1;
  61   1            display_lcm(j+'0',0xc8);
  62   1                key=keyscan();
  63   1       }
  64          
  65          /****************保存温度'A'***********/
  66          void save_temp(void)
  67           {
  68   1              unsigned char save_string[]={"save temp"};
  69   1              unsigned char judge,i=5;
  70   1      
  71   1                      diaplay_string(save_string,9);
  72   1                      if(IIC_Adress>=255) IIC_Adress=0;
  73   1       retry: judge=IICWrite(IIC_Adress,datTem,2);
  74   1              if(judge==0&&i>0) {i--; goto retry;}
  75   1                  IIC_Adress+=2;
  76   1                      key=0;
  77   1                      key=keyscan();
  78   1                      WriteCommandLCM(0x01,1);
  79   1       }
  80          /*********************查看记录串口发送********/
  81          void view_uart(void)
  82           { 
  83   1         unsigned char  baiwei=0,gewei=0,shiwei=0;
  84   1         unsigned int   shifen=0,baifen=0,qianfen=0,wanfen=0;
  85   1      
  86   1         baiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%1000/100)+48;
  87   1         shiwei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%100/10)+48;
  88   1         gewei=((((datTem[1]&0x0F)<<4)+((datTem[0]&0xF0)>>4))%10/1)+48;
  89   1         shifen=(((datTem[0]&0x0F)*625)%10000/1000)+48;
  90   1         baifen=(((datTem[0]&0x0F)*625)%1000/100)+48;
  91   1         qianfen=(((datTem[0]&0x0F)*625)%100/10)+48;
  92   1         wanfen=(((datTem[0]&0x0F)*625)%10/1)+48;
  93   1      
  94   1          key=keyscan();
  95   1         diaplay_string(uart_transmit,13);
  96   1         send_char_uart(baiwei);
  97   1         send_char_uart(shiwei);
  98   1         send_char_uart(gewei);
  99   1         send_char_uart('.');
 100   1         send_char_uart(shifen);
 101   1         send_char_uart(baifen);
 102   1         send_char_uart(qianfen);
 103   1         send_char_uart(wanfen);
 104   1         send_char_uart(' ');
 105   1         WriteCommandLCM(0x01,1); 
 106   1       }
 107          /**************查看记录'B'***************/
 108          void  over_record(void)
 109           {
 110   1              unsigned char view_string[]={"view records"};
 111   1                      unsigned int record_adress=0;
 112   1                  unsigned char j,judge1;
 113   1      
 114   1          do{     diaplay_string(view_string,12);
 115   2                  if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
 116   2                      key=0;
C51 COMPILER V8.02   MAIN                                                                  06/01/2008 12:34:31 PAGE 3   

 117   2                  key=keyscan();
 118   2      retry1: judge1=IICRead(datTem,record_adress,2);
 119   2              key=keyscan();
 120   2                  if(judge1==0&&j>0) {j--; goto retry1;}
 121   2                  key=keyscan();
 122   2              temp_view(datTem);
 123   2                  key=keyscan();
 124   2                  if(key=='C'){ key=0;
 125   3                                    if(record_adress>=256) record_adress=0; 
 126   3                                record_adress+=2; }
 127   2                  if(uart_receive_date=='C'){ uart_receive_date=0;
 128   3                                                  if(record_adress>=256) record_adress=0; 
 129   3                                              record_adress+=2; }
 130   2                  key=keyscan();
 131   2                  if(key=='D'){ key=0;
 132   3                                    if(record_adress<=0) record_adress=256;
 133   3                                record_adress-=2; 
 134   3                                              }
 135   2                  if(uart_receive_date=='D'){ uart_receive_date=0;
 136   3                                                  if(record_adress<=0) record_adress=256;
 137   3                                              record_adress-=2;
 138   3                                                                        }
 139   2                  if(key=='G')  { key=0;view_uart();}
 140   2                  if(uart_receive_date=='G'){ uart_receive_date=0;view_uart();}
 141   2                  key=keyscan();
 142   2                  if(key=='E'){ WriteCommandLCM(0x01,1); break;}
 143   2                      if(uart_receive_date=='E') {WriteCommandLCM(0x01,1);break; }
 144   2             }while(key!='E');
 145   1        }
 146          /****************自动保存温度'F'***********/
 147          void auto_save_temp(void)
 148           {
 149   1         unsigned int i;
 150   1         unsigned char auto_save_string[]={"auto save temp"};
 151   1      
 152   1         do{
 153   2            diaplay_string(auto_save_string,14);
 154   2                if(uart_receive_date!=0) display_lcm(uart_receive_date,0x8f);
 155   2            key=0;
 156   2            for(i=0;i<1000;i++){

⌨️ 快捷键说明

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