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

📄 main.lst

📁 51DEVTest use keil to program this code.
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil_C51\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2           *      Copyright (C) 2006, 华中科技大学电气与电子科技创新中心
   3           *      All Rights Reserved.
   4           *      
   5           *      文件名:         main.c
   6           *      文件描述:       STI51开发板测试程序主文件
   7           *                      
   8           *      当前版本:       1.0
   9           *      作者:           SangWei(swkyer@gmail.com)
  10           *      完成日期:       2005年12月22日
  11           *      
  12          */
  13          #include <REGX52.h>
  14          #include <INTRINS.H>
  15          #include "SEG7\SEG7.h"
  16          #ifdef __AT89X52_H__
  17          #include "UART\uart.h"
  18          #endif
  19          #include "SMC162\SMC162.h"
  20          #include "TLC549\TLC549.h"
  21          #include "TLC5620\TLC5620.h"
  22          
  23          /* 蜂鸣器控制引脚 */
  24          #define BEEP_PIN                0x10
  25          
  26          /* 定时时间高低字节数据 */
  27          #define TIMERH          0xEE
  28          #define TIMERL          0xFF
  29          
  30          /* 蜂鸣器定时时间 */
  31          #define BEEPTMH         0xFF
  32          #define BEEPTML         0x80
  33          
  34          void InitTimer0(void);
  35          void InitTimer1(void);
  36          unsigned char beepcnt1;
  37          unsigned int beepcount;
  38          void Beep(unsigned char tms);
  39          
  40          #define KEY1            0x20
  41          #define KEY2            0x40
  42          #define KEY3            0x80
  43          unsigned char key, key_old, key_oold;
  44          
  45          bit bkey1, bkey2, bkey3;
  46          
  47          unsigned char advalue, adcnt;
  48          unsigned int adsum, addisplay;
  49          
  50          #ifdef __AT89X52_H__
  51          unsigned char uartbuf, uart_status;
  52          #endif
  53          
  54          void main(void)
  55          {
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 2   

  56   1              unsigned char i, j;
  57   1              unsigned char outdat[4];
  58   1      
  59   1              P0 = 0xFF;
  60   1              P1 = 0xFF;
  61   1              P2 = 0xFF;
  62   1      
  63   1              Beep(3);
  64   1      
  65   1              TLC5620_Init();
  66   1      
  67   1              LcdInit();      
  68   1              PutStr(0, 0, " STI51 Dev Board ");
  69   1              PutStr(0, 1, "   HUST  STI   ");
  70   1      
  71   1              /* 测试单路输出电压 */
  72   1              TLC5620_SetOutput(CHL0, 0);
  73   1              TLC5620_SetOutput(CHL1, 0x3F);
  74   1              TLC5620_SetOutput(CHL2, 0x7F);
  75   1              TLC5620_SetOutput(CHL3, 0xFF);
  76   1      
  77   1      #ifdef __AT89X52_H__
  78   1              uart_status = 0;
  79   1              UartInit(BAUDRATE_38400);
  80   1              SendString("STI51 Dev Board, HUST-STI\r\n");
  81   1      #endif
  82   1      
  83   1              adcnt = 0;
  84   1              adsum = 0;
  85   1      
  86   1              key = P1&0xE0;
  87   1              key_oold = key_old = key;
  88   1              bkey1 = bkey2 = bkey3 = 0;
  89   1      
  90   1              InitTimer1();
  91   1              dispram[0] = 0;
  92   1              dispram[1] = 1;
  93   1              dispram[2] = 2;
  94   1              dispram[3] = 3;
  95   1              TR1 = 1;
  96   1      
  97   1              i = j = 0;
  98   1              while(1)
  99   1              {
 100   2                      i++;
 101   2                      /* 四路同时输出相位不同的锯齿波电压 */
 102   2                      outdat[CHL0] = i;
 103   2                      outdat[CHL1] = i + 64;
 104   2                      outdat[CHL2] = i + 128;
 105   2                      outdat[CHL3] = i + 192;
 106   2                      TLC5620_AllOutput(outdat);
 107   2      
 108   2                      if(bkey3 == 1)
 109   2                      {
 110   3                              advalue = TLC549_GetAD();
 111   3                              if(adcnt == 255)
 112   3                              {
 113   4                                      adcnt = 0;
 114   4                                      addisplay = adsum / 128;                        /* 求累加和,平均值滤波 */
 115   4                                      dispram[0] = 0x10;                                      /* 刷新显示值 */
 116   4                                      dispram[1] = (addisplay/100) | 0x80;/* 添加小数点 */
 117   4                                      dispram[2] = (addisplay%100)/10;
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 3   

 118   4                                      dispram[3] = addisplay%10;
 119   4                                      adsum = 0;                                                      /* 累加值清零 */
 120   4                              }
 121   3                              else
 122   3                              {
 123   4                                      adcnt++;
 124   4                                      adsum += advalue;                                       /* 累加128次 */
 125   4                              }
 126   3                      }
 127   2      
 128   2                      if(key == key_old && key_old == key_oold && key != 0xE0)
 129   2                      {
 130   3                              EA = 0;
 131   3                              if(!(key&KEY1))
 132   3                              {
 133   4                                      bkey1 ^= 1;
 134   4                                      if(bkey1 == 0)
 135   4                                      {
 136   5                                              PutStr(0, 0, " STI51 Dev Board ");
 137   5                                              PutStr(0, 1, "   HUST  STI   ");
 138   5                                      }
 139   4                                      else
 140   4                                      {
 141   5                                              PutStr(0, 0, " KEY S3 Pressed ");
 142   5                                              PutStr(0, 1, "   <--- Back   ");
 143   5                                      }
 144   4                              }
 145   3                              else if(!(key&KEY2))
 146   3                              {
 147   4                                      bkey2 ^= 1;
 148   4                                      bkey3 = 0;
 149   4                                      if(bkey2 == 0)
 150   4                                      {
 151   5                                              dispram[0] = 4;
 152   5                                              dispram[1] = 5;
 153   5                                              dispram[2] = 6;
 154   5                                              dispram[3] = 7;
 155   5                                      }
 156   4                                      else
 157   4                                      {
 158   5                                              dispram[0] = 0;
 159   5                                              dispram[1] = 1;
 160   5                                              dispram[2] = 2;
 161   5                                              dispram[3] = 3;
 162   5                                      }
 163   4                              }
 164   3                              else if(!(key&KEY3))
 165   3                              {
 166   4                                      bkey3 = 1;
 167   4                              }
 168   3                              EA = 1;
 169   3                      }
 170   2      
 171   2                      if(i == 255)
 172   2                      {
 173   3                              if(j >= 3)
 174   3                                      j = 0;
 175   3                              else
 176   3                                      j++;
 177   3                      }
 178   2                      P1 = 0xE0 | (~(1<<j));
 179   2      
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 4   

 180   2      #ifdef __AT89X52_H__
 181   2                      /* 串口协议(0xAA, 0x55, 0xAA)处理 */
 182   2                      if(IsUartReceived())
 183   2                      {
 184   3                              ReadChar(&uartbuf);
 185   3                              if(uart_status == 0)
 186   3                              {
 187   4                                      if(uartbuf == 0xAA)
 188   4                                              uart_status = 1;
 189   4                                      else
 190   4                                              uart_status = 0;
 191   4                              }
 192   3                              else if(uart_status == 1)
 193   3                              {
 194   4                                      if(uartbuf == 0x55)
 195   4                                              uart_status = 2;
 196   4                                      else
 197   4                                              uart_status = 0;
 198   4                              }
 199   3                              else if(uart_status == 2)
 200   3                              {
 201   4                                      uart_status = 0;
 202   4                                      if(uartbuf == 0xAA)
 203   4                                              SendString("Protocol: 0xAA, 0x55, 0xAA Received\r\n");
 204   4                              }
 205   3                              else
 206   3                                      uart_status = 0;
 207   3                      }
 208   2      #endif
 209   2              }
 210   1      }
 211          
 212          /**************************************
 213          说明:   定时器1初始化
 214                          定时时间10mS
 215          **************************************/
 216          void InitTimer1(void)
 217          {
 218   1              /* 变量初始化 */
 219   1              seg7cs = 0;
 220   1              dispram[0] = dispram[1] = dispram[2] = dispram[3] = 0;
 221   1              /* 初始化定时器,定时时间10mS,允许定时器中断 */
 222   1              TMOD = 0x90;
 223   1              TH1 = TIMERH;
 224   1              TL1 = TIMERL;
 225   1              /* 开定时器中断 */
 226   1              EA = 1;
 227   1              ET1 = 1;
 228   1      }
 229          
 230          /**************************************
 231          说明:   定时器1中断处理函数
 232          **************************************/
 233          void Timer1ISR(void) interrupt 3 using 2
 234          {
 235   1              /* 定时器重装 */
 236   1              TH1 = TIMERH;
 237   1              TL1 = TIMERL;
 238   1              /* 清中断标志 */
 239   1              TF1 = 0;
 240   1              /* 键盘检测 */
 241   1              key_oold = key_old;
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 5   

 242   1              key_old = key;
 243   1              key = P1 & 0xE0;
 244   1              /* 循环显示 */
 245   1              if(seg7cs >= 3)
 246   1                      seg7cs = 0;
 247   1              else
 248   1                      seg7cs++;
 249   1              WriteSegData(dispram[seg7cs]);
 250   1              WriteCsData(1<<seg7cs);
 251   1      }
 252          
 253          /**************************************
 254          说明:   定时器初始化
 255                          定时时间0.5mS
 256          **************************************/
 257          void InitTimer0(void)
 258          {
 259   1              /* 变量初始化 */
 260   1              beepcnt1 = 0;
 261   1              beepcount = 0;
 262   1              /* 初始化定时器,定时时间0.5mS,允许定时器中断 */
 263   1              TMOD = 0x09;
 264   1              TH0 = BEEPTMH;
 265   1              TL0 = BEEPTML;
 266   1              /* 开定时器中断 */
 267   1              EA = 1;
 268   1              ET0 = 1;
 269   1      }
 270          
 271          /**************************************
 272          说明:   定时器0中断处理函数
 273          **************************************/
 274          void Timer0ISR(void) interrupt 1 using 3
 275          {
 276   1              /* 定时器重装 */
 277   1              TH0 = BEEPTMH;
 278   1              TL0 = BEEPTML;
 279   1              /* 清中断标志 */
 280   1              TF0 = 0;
 281   1              /* 循环显示 */
 282   1              if(beepcnt1%2)
 283   1                      P1 ^= BEEP_PIN;
 284   1              beepcount++;
 285   1      }
 286          
 287          void Beep(unsigned char tms)
 288          {
 289   1              InitTimer0();
 290   1              TR0 = 1;
 291   1      
 292   1              while(1)
 293   1              {
 294   2                      if(beepcount == 1000)
 295   2                      {
 296   3                              EA = 0;
 297   3                              beepcount = 0;
 298   3                              EA = 1;
 299   3                              if(beepcnt1 == 2*tms)
 300   3                                      break;
 301   3                              else
 302   3                                      beepcnt1++;
 303   3                      }
C51 COMPILER V7.20   MAIN                                                                  04/13/2006 13:47:58 PAGE 6   

 304   2              }
 305   1      
 306   1              TR0 = 0;
 307   1              EA = 0;
 308   1              ET0 = 0;
 309   1      }
 310          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    739    ----
   CONSTANT SIZE    =    133    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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