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

📄 serial port.lst

📁 功能:开机检验数码管好坏
💻 LST
字号:
C51 COMPILER V7.50   SERIAL_PORT                                                           11/08/2008 20:46:51 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL_PORT
OBJECT MODULE PLACED IN serial port.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE serial port.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /**********************
   2          编写时间:2008年8月10日
   3          编辑:小鱼儿
   4          功能:开机检验数码管好坏,用串口通讯发送一个十六进制数,两位数码管显示,并有八个发光二极管
   5                以二进制的形式点亮,其十六进值与数码管显示一致。
   6          ***********************/
   7          
   8          #include "reg52.h"   //头文件
   9          #include "intrins.h"
  10          
  11          #define uchar unsigned char
  12          #define uint unsigned int 
  13          uchar a,b,flag;
  14          sbit dula=P2^6;//数码管段选
  15          sbit wela=P2^7;//数码管位选
  16          sbit beep=P2^3;//蜂鸣器引脚定义
  17          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  18                                                  0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  19          
  20          
  21          
  22          void delay(uint z)//延时子程序
  23          {
  24   1              uint x,y;
  25   1              for(x=z;x>0;x--)
  26   1                      for(y=125;y>0;y--);
  27   1      }
  28          
  29          /***********************
  30          函数名:beep200ms
  31          功能:数码管全亮,闪烁三次后,前两个数码管显示0.
  32          ************************/
  33          void beep200ms()//开机指示灯和数码管全闪 
  34          {
  35   1              for(b=0;b<3;b++)//重复三次
  36   1              {
  37   2                      P1=0x00;        
  38   2                  dula=0;
  39   2                  P0=0xff;
  40   2                  dula=1;
  41   2                  dula=0;
  42   2              
  43   2                  wela=0;
  44   2                  P0=0xc0;
  45   2                  wela=1;
  46   2                      wela=0;
  47   2                      delay(500);
  48   2              
  49   2                      P1=0xff;        
  50   2                  dula=0;
  51   2                  P0=0x00;
  52   2                  dula=1;
  53   2                  dula=0;
  54   2              
  55   2                  wela=0;
C51 COMPILER V7.50   SERIAL_PORT                                                           11/08/2008 20:46:51 PAGE 2   

  56   2                  P0=0xc0;
  57   2                  wela=1;
  58   2                      wela=0;
  59   2                      delay(500);
  60   2              }
  61   1          dula=0;
  62   1          P0=0x3f;//十位显示0
  63   1          dula=1;
  64   1          dula=0;
  65   1      
  66   1          wela=0;
  67   1          P0=0xfe;
  68   1          wela=1;
  69   1              wela=0;
  70   1              delay(10);
  71   1      
  72   1          dula=0;
  73   1          P0=0x3f;//个位显示0
  74   1          dula=1;
  75   1          dula=0;
  76   1      
  77   1          wela=0;
  78   1          P0=0xfd;
  79   1          wela=1;
  80   1              wela=0;
  81   1              delay(10);      
  82   1      }
  83          void display1(uint temp)//发送0x01,显示1
  84          {
  85   1              uint aa,bb;     
  86   1              aa=temp/16;
  87   1              bb=temp%16;
  88   1      
  89   1          dula=0;
  90   1          P0=table[aa];//显示十位
  91   1          dula=1;
  92   1          dula=0;
  93   1      
  94   1          wela=0;
  95   1          P0=0xfe;
  96   1          wela=1;
  97   1              wela=0;
  98   1              delay(10);
  99   1      
 100   1          dula=0;
 101   1          P0=table[bb];//显示个位 
 102   1          dula=1;
 103   1          dula=0;
 104   1      
 105   1          wela=0;
 106   1          P0=0xfd;
 107   1          wela=1;
 108   1              wela=0;
 109   1              delay(10);
 110   1      }
 111          
 112          
 113          void move()//流水灯 
 114          {
 115   1              uchar x,temp;
 116   1              x=0;
 117   1              P1=0xfe;
C51 COMPILER V7.50   SERIAL_PORT                                                           11/08/2008 20:46:51 PAGE 3   

 118   1              for(x=0;x<8;x++)
 119   1              {                       
 120   2                      temp=P1;
 121   2                      P1=_crol_(temp,1);
 122   2                      delay(50);
 123   2              }
 124   1              for(x=0;x<8;x++)
 125   1              {               
 126   2                      temp=P1;
 127   2                      P1=_cror_(temp,1);
 128   2                      delay(50);
 129   2              }       
 130   1      }
 131          
 132          
 133          void main()
 134          {
 135   1              beep200ms();
 136   1              TMOD=0x20;//设置定时/计数器T1的工作方式为方式2
 137   1              TH1=0xfd;
 138   1              TL1=0xfd;
 139   1              TR1=1;//运行控制位 
 140   1              SM0=0;
 141   1              SM1=1;//SCON 串行口的工作方式为方式1
 142   1              REN=1;//允许串行接受
 143   1              EA=1; //开总中断
 144   1              ES=1;//开串行口中断允许位
 145   1              PCON=0x00;
 146   1              beep=1;//关蜂鸣器       
 147   1              while(1)
 148   1              {
 149   2                      display1(SBUF);
 150   2                      if(flag==1)
 151   2                      {
 152   3                              ES=0;//
 153   3                              flag=0;
 154   3                              SBUF=a;
 155   3                              while(!TI); 
 156   3                              TI=0;//TI为发送中断标志位,硬件置1,软件置0
 157   3                              ES=1;                   
 158   3                      }
 159   2                      switch(SBUF)
 160   2                      {
 161   3                              case 01:move();
 162   3                                      break;
 163   3                              case 02:beep200ms();
 164   3                                      break;                  
 165   3                      }       
 166   2              }
 167   1      }
 168          
 169          void serial() interrupt 4
 170          {
 171   1              P1=SBUF;
 172   1              a=SBUF;
 173   1              flag=1;
 174   1              RI=0;//接受中断标志位,硬件置1,软件置0
 175   1      }
 176          
 177          
 178          
 179          
C51 COMPILER V7.50   SERIAL_PORT                                                           11/08/2008 20:46:51 PAGE 4   



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