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

📄 主程序.lst

📁 单片机演示程序 串口接收
💻 LST
字号:
C51 COMPILER V6.12  _鞒_序                                                                 08/09/2008 13:34:31 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE _鞒_序
OBJECT MODULE PLACED IN .\主程序.OBJ
COMPILER INVOKED BY: C:\Program Files\KEIL C\C51\BIN\C51.EXE .\主程序.c DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include <REG51.H>
   3          #include<absacc.h>
   4          #include <stdio.h>
   5          #include <STRING.H>
   6          #include <MATH.H>
   7          #define DB P0
   8          
   9          #define uchar unsigned char
  10          #define uint  unsigned int
  11          
  12          #include "Lcd1602.h"
  13          
  14          
  15          
  16          
  17          //以上代码保留不要删除
  18          
  19          uchar revlen ;   //目前收到的字符的数目
  20          //单片机初始化:
  21          void InitialCpu()   
  22          {
  23   1         //开串行中断 
  24   1          ET0=0;    //关定时中断0
  25   1          ET1=0;    //关定时中断1
  26   1          ES=1;     //开串行中断
  27   1          EX0=0;    //开外部中断0
  28   1          EX1=0;    //开外部中断1
  29   1          EA=1;     //中断允许
  30   1          IP=0x00;  //中断优先级
  31   1      
  32   1        //串行中断设置:
  33   1        SCON=0x50;   //SM0 SM1 SM2 REN =0101,模式1,允许接收;
  34   1      
  35   1      
  36   1          //假设波特率19.2k,晶震为11.059M.
  37   1            PCON=PCON | 0x80; //SMOD=1;
  38   1            TMOD=0x20 ; //定时器1工作模式2,8位自动重装.当溢出后自动装载TH1到TL1.
  39   1            TL1=0xFD;
  40   1            TH1=0xFD;   //初值
  41   1            TR1=1;      //启动订时器
  42   1      
  43   1      }
  44          
  45          
  46          
  47          //接收时要响应串行中断(向量号4),并判断是发送中断还是接收中断.
  48          void uart() interrupt 4
  49                {
  50   1      	     uchar row;
  51   1      		 uchar col;
  52   1      		 
  53   1               if(RI==1)
  54   1                  {
  55   2                   
C51 COMPILER V6.12  _鞒_序                                                                 08/09/2008 13:34:31 PAGE 2   

  56   2                   RI=0;   //软件清零
  57   2                   if(revlen>=32)
  58   2      			    {
  59   3      				 revlen=0;
  60   3        			     
  61   3      				}
  62   2      			 if(revlen==0)  
  63   2      			   {
  64   3      			    configure(0x01);
  65   3      				msec(100);
  66   3      			   }
  67   2      
  68   2                   if(revlen<16)
  69   2      			     {
  70   3      				   row=0;
  71   3      				   col=revlen;
  72   3      				 }
  73   2      			 else{
  74   3      			       row=1;
  75   3      				   col=revlen-16;
  76   3      			     }
  77   2                   
  78   2                   printchar(row,col, SBUF );
  79   2      			 revlen=revlen+1;
  80   2      
  81   2                  }
  82   1               if(TI==1)
  83   1                  {
  84   2                   TI=0;  //软件清零
  85   2                   
  86   2      
  87   2                  }
  88   1            }
  89          
  90          
  91          
  92          //接收时要响应串行中断(向量号4),并判断是发送中断还是接收中断.
  93          
  94          /////
  95          main()
  96          {
  97   1          unsigned char display=0x01;
  98   1          unsigned char P2Copy;
  99   1          unsigned char KeyNo;
 100   1          InitialCpu();
 101   1          msec(200);
 102   1          LcdIni();
 103   1      
 104   1          print(0,0,"hello world", strlen("hello world"));
 105   1          msec(100);
 106   1      	print(1,0,"51MPU study"  , strlen("51MPU study"));
 107   1      
 108   1          SBUF='a';
 109   1          revlen =0;
 110   1          while(1)
 111   1            {
 112   2              //跑马灯
 113   2      	    P1=display;
 114   2      		msec(50);
 115   2      	    if(display<128)
 116   2      	      display=display*2;
 117   2      	    else display=0x01;
C51 COMPILER V6.12  _鞒_序                                                                 08/09/2008 13:34:31 PAGE 3   

 118   2      
 119   2              //按键:
 120   2              P2Copy=P2;
 121   2              P2Copy=P2Copy & 0xf8 ;
 122   2              if(P2Copy !=0xf8)
 123   2               {
 124   3      
 125   3                  //判断键盘编码
 126   3                  KeyNo=P2Copy & 0x08; 
 127   3                  if(KeyNo==0)
 128   3                    {
 129   4                       configure(0x01);
 130   4      			   	 msec(50);
 131   4                       print(0,0,"Key 1 Press", strlen("Key 1 Press"));
 132   4                    }
 133   3      
 134   3      
 135   3                  KeyNo=P2Copy & 0x10; 
 136   3                  if(KeyNo==0)
 137   3                    {
 138   4                       configure(0x01);
 139   4      			   	 msec(50);
 140   4                       print(0,0,"Key 2 Press", strlen("Key 2 Press"));
 141   4                    }
 142   3      
 143   3      
 144   3                  KeyNo=P2Copy & 0x20; 
 145   3                  if(KeyNo==0)
 146   3                    {
 147   4                       configure(0x01);
 148   4      			   	 msec(50);
 149   4                       print(0,0,"Key 3 Press", strlen("Key 3 Press"));
 150   4                    }
 151   3      
 152   3      
 153   3                  KeyNo=P2Copy & 0x40; 
 154   3                  if(KeyNo==0)
 155   3                    {
 156   4                       configure(0x01);
 157   4      			   	 msec(50);
 158   4                       print(0,0,"Key 4 Press", strlen("Key 4 Press"));
 159   4                    }
 160   3      
 161   3                  KeyNo=P2Copy & 0x80; 
 162   3                  if(KeyNo==0)
 163   3                    {
 164   4                       configure(0x01);
 165   4      			   	 msec(50);
 166   4                       print(0,0,"Key 5 Press", strlen("Key 5 Press"));
 167   4                    }
 168   3                    
 169   3                  //等待弹起
 170   3                  while(1)
 171   3                  {
 172   4                  P2Copy=P2;
 173   4                  P2Copy=P2Copy & 0xf8 ;
 174   4                  if(P2Copy ==0xf8)  break;
 175   4                  }
 176   3                  
 177   3               }
 178   2          
 179   2            }
C51 COMPILER V6.12  _鞒_序                                                                 08/09/2008 13:34:31 PAGE 4   

 180   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    509    ----
   CONSTANT SIZE    =     84    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1       5
   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 + -