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

📄 main.lst

📁 完成了温度采集并显示的功能
💻 LST
字号:
C51 COMPILER V7.10   MAIN                                                                  05/26/2008 09:41:02 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\output\main.obj
COMPILER INVOKED BY: C:\C51\BIN\C51.EXE source\main.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\main.lst) OBJECT(.\output\m
                    -ain.obj)

line level    source

   1          #include<aduc834.h>
   2          #include"..\headers\main.h"
   3          #include"..\headers\1602.h"
   4          #include"..\headers\RS485.h"
   5          
   6          extern unsigned int code AT502[70];
   7          
   8          bit Sample_Flag;                                 //采集标志位
   9          sbit LED = P3^5;                                 //LED指示灯
  10          unsigned char UART_BUF;                  //串口接收缓冲单元
  11          unsigned char Tem;
  12          union {                                                  //全局变量,存储AD转换值
  13          
  14          unsigned int AD_Value;
  15          unsigned char TEM[2];
  16          }v;
  17          
  18          void main ()
  19          
  20          {
  21   1        LCD_Init();
  22   1        main_Init();
  23   1        while(1)
  24   1        {
  25   2         if(Sample_Flag)
  26   2          {
  27   3           Sample_Flag =0;
  28   3           Sample();
  29   3           Tem = Find();
  30   3               DDRAM_ADDR_SET(2,0x06);         //设置显示位置,第一个参数是行数,第二个参数是第几位
  31   3               WR_DAT(Tem/10 +'0');        //显示高位
  32   3               WR_DAT(Tem%10 +'0');        //显示低位
  33   3               WR_DAT(0X00);               //调用CGRAM字库显示度
  34   3               WR_DAT(0X43);                       //显示C
  35   3               
  36   3          }              
  37   2      
  38   2         if(UART_BUF =='B')                     //串口发送温度值
  39   2          {
  40   3               UART_BUF = 0X00;
  41   3               //Tem = 21;
  42   3           SendChar(Tem/10 +'0');              //发送温度值十位数
  43   3           SendChar(Tem%10 +'0');              //发送温度值个位数
  44   3               }
  45   2      
  46   2         if(UART_BUF == 'A')           //发送AD转换原始数据
  47   2          {
  48   3           UART_BUF =0X00;
  49   3           SendVar(v.TEM[0]);          //发送高位
  50   3           SendVar(v.TEM[1]);         //发送低位
  51   3          }
  52   2      
  53   2              if(UART_BUF == 'C')                     //进入掉电模式命令
  54   2              {
C51 COMPILER V7.10   MAIN                                                                  05/26/2008 09:41:02 PAGE 2   

  55   3                PCON =0x22;                           //掉电模式,INT0方式唤醒,且PLLCON.0已置位,故TIC中断不唤醒
  56   3               }
  57   2        }
  58   1      
  59   1      }
  60          void main_Init()                 //系统初始化
  61          
  62          {
  63   1              PLLCON = 0x80;          //12MHZ /掉电时把晶振关掉(PLLCON.0位)
  64   1              TH2=0XFF;
  65   1              TL2=0XD7;                       //9600波特率
  66   1              RCAP2H=0XFF;
  67   1              RCAP2L=0XD7;
  68   1              SCON=0X50;                 //方式1,允许接收
  69   1              T2CON=0X34;                //定时器2作为串口波特率发生器
  70   1          PCON=0x00;             //波特率倍增位0
  71   1      
  72   1              ADC1CON=0x78;      //AIN5,单极性
  73   1      
  74   1              INTVAL=0x10;       //定时时间1/8s
  75   1              TIMECON=0x03;      //单位为1/128s
  76   1              IEIP2=0x04;                //TIC定时中断允许
  77   1      //      InitDsp();                 //1602液晶初始化
  78   1              ES = 1;            //串口中断允许 
  79   1      
  80   1              IT0 =1;                    //外部中断0 INTO 的相关设置
  81   1              EX0 =1;
  82   1      
  83   1              EA=1;                      //总中断允许
  84   1              Sample_Flag = 0 ;
  85   1      
  86   1      }
  87          /*********************二分法查找程序*****************************/
  88          unsigned char Find()
  89          {
  90   1       unsigned char Counter_First=0,Counter_Mid=0,Counter_End=69 ;
  91   1       unsigned char i;
  92   1         for(i=0;i<7;i++)
  93   1           {
  94   2               Counter_Mid = (Counter_First+Counter_End)>>1; //中间值
  95   2               if(v.AD_Value>=AT502[Counter_Mid])                   //与中间值比较
  96   2                   Counter_End = Counter_Mid;                                    //小于中间值则转到前半段
  97   2                   else
  98   2                   Counter_First = Counter_Mid;                                  //大于中间值则转到后半段
  99   2            }
 100   1        return Counter_End;                                 //返回最后的查找值
 101   1      
 102   1      
 103   1      }
 104          
 105          /*****************温度采集程序******************************/
 106          void Sample(void)                          //采用全局变量传值,故不用参数
 107          
 108          {
 109   1         ADC1CON = 0x78;                        //AIN5,单极性
 110   1         ADCMODE = 0x12;                        //ADC1允许,ADC0关闭,单个转换方式
 111   1         while(!RDY1);                      //等待转换结束
 112   1         RDY1 = 0;
 113   1         v.TEM[0] = ADC1H;
 114   1         v.TEM[1] = ADC1L;              //用全局变量联合体存储
 115   1      
 116   1      }
C51 COMPILER V7.10   MAIN                                                                  05/26/2008 09:41:02 PAGE 3   

 117          
 118          void  TIC_INT() interrupt 10
 119          {
 120   1         LED = ~LED;
 121   1         Sample_Flag = 1;
 122   1      
 123   1      }
 124          
 125          void  UART_INT() interrupt 4
 126          
 127          {
 128   1         UART_BUF = SBUF;
 129   1         RI =0;
 130   1               
 131   1      }
 132          
 133          
 134          void EX0_INT()  interrupt 0       //用IRET来唤醒CPU
 135          
 136          {
 137   1      
 138   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    256    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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