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

📄 main.lst

📁 51系列单片机实验课程:计数 (通过串口
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  12/15/2007 15:03:53 PAGE 1   


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

stmt level    source

   1          /*****************************************************
   2          激情创造,精彩无限-------欢迎进入单片机的世界
   3          *****************************************************/
   4          /*****************************************************
   5          程序说明:本程序是将串口接收到的数据中的A的个数进行计算,显示结果
   6          硬件连接:使用实验箱BACK 3部分电路。
   7          程序版本:
   8          作者:ZJ
   9          编写时间:2007年12月11日
  10          修改记录:
  11          备注:
  12          *****************************************************/
  13          
  14          #include <reg52.h>
  15          
  16          sbit SEGLOCK = P1^3;
  17          sbit POSITLOCK = P1^2;
  18          
  19          code unsigned char LedCode[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  20          code unsigned char LedPosit[] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00};
  21          
  22          unsigned char ch;                       //定义一个接收数据的临时变量
  23          unsigned char number;
  24          
  25          void Delay (unsigned int Dat)
  26          {
  27   1              unsigned int i;
  28   1              for (i=0;i<Dat;i++);
  29   1      }
  30          
  31          void Display (void)
  32          {
  33   1              P0 = LedCode[number/10];        //送出十位数字
  34   1              SEGLOCK = 1;                            //锁存段码
  35   1              SEGLOCK = 0;
  36   1              P0 = LedPosit[6];                       //送出十位的位选信号
  37   1              POSITLOCK = 1;                          //锁存位选信号
  38   1              POSITLOCK = 0;
  39   1              Delay(20);                                      //延时
  40   1              P0 = LedPosit[8];                       //送出消隐信号
  41   1              POSITLOCK = 1;
  42   1              POSITLOCK = 0;
  43   1              
  44   1              P0 = LedCode[number%10];        //送出个位数字
  45   1              SEGLOCK = 1;                            //锁存段码
  46   1              SEGLOCK = 0;
  47   1              P0 = LedPosit[7];                       //送出个位的位选信号
  48   1              POSITLOCK = 1;                          //锁存位选信号
  49   1              POSITLOCK = 0;
  50   1              Delay(20);                                      //延时
  51   1              P0 = LedPosit[8];                       //送出消隐信号
  52   1              POSITLOCK = 1;
  53   1              POSITLOCK = 0;
  54   1      }
  55          
C51 COMPILER V7.06   MAIN                                                                  12/15/2007 15:03:53 PAGE 2   

  56          void main (void)
  57          {
  58   1              SCON = 0x50;                                            //设定串口的工作方式
  59   1              TMOD = (TMOD & 0x0f) | 0x20;            //设定T1作为波特率发生器的工作模式
  60   1              TH1 = -11059200L/32/12/9600;            //设定T1的初值  
  61   1              TL1 = TH1;
  62   1              TR1 = 1;                                                        //启动波特率发生器
  63   1              ES = 1;                                                         //开启串口中断
  64   1              EA = 1;                                                         //开启总的中断
  65   1              while (1)
  66   1              {
  67   2                      Display();                                              //主程序里循环执行显示程序
  68   2              }
  69   1      }
  70          
  71          void Uart_int (void) interrupt 4                //串口中断服务程序
  72          {
  73   1              if ( RI==1 )                                            //判断是否有数据收到
  74   1              {
  75   2                      ch = SBUF;                                              //有数据收到,将数据从接收缓冲器中取出
  76   2                      RI = 0;
  77   2                      if ( ch=='a' )                                  //判断取出的数据是否为'A'字母
  78   2                              if( ++number>=100 )                     //如果是'A'字母,对计数变量加1,并判断是否超过100

⌨️ 快捷键说明

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