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

📄 sy_003_1.lst

📁 基于C51的串口通信和外部中断
💻 LST
字号:
C51 COMPILER V7.06   SY_003_1                                                              09/25/2008 14:58:33 PAGE 1   


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

stmt level    source

   1          /*******************************************************************************
   2          *                                                                              
   3          *    File       : SY_003_1.c                                                    
   4          *    Date       : 2007-09-24                                                  
   5          *    Version    : 1.0                                                         
   6          *    Powerd by  : shenyae86  QQ:184676957                                     
   7          *    中北大学信息与通信工程学院        沈阳                                    
   8          ********************************************************************************
   9          *    Descriptoon:                                                              
  10          *                 串口通信 数码管显示发送和接受的数据  串口波特率9600
  11          *                 单片机将上位机发来的信息通过数码管低两位显示出来后再将之取反送回上位机,取反      
  12          *                 后的数据通过数码管高两位显示
  13          *                 适用于CC100C                                           
  14          *                 产品网站    http://www.ccnuc.cn 传诚科技                                              
  15          *                                                                              
  16          *******************************************************************************/
  17          #include <REG51.H>
  18          #include <intrins.h>
  19          #define uchar unsigned char 
  20          const   uchar   LedCode[]={
  21                  0xC0,/*0*/
  22                  0xF9,/*1*/
  23                  0xA4,/*2*/
  24                  0xB0,/*3*/
  25                  0x99,/*4*/
  26                  0x92,/*5*/
  27                  0x82,/*6*/
  28                  0xF8,/*7*/
  29                  0x80,/*8*/
  30                  0x90,/*9*/
  31                  0x88,/*A*/
  32                  0x83,/*b*/
  33                  0xC6,/*C*/
  34                  0xA1,/*d*/
  35                  0x86,/*E*/
  36                  0x8E,/*F*/};//0-F off
  37          uchar dis_digit=0xfe;
  38          uchar data dis_buf[8];
  39          uchar data dis_index;
  40          void delay()
  41          {
  42   1          uchar i = 0;
  43   1          uchar j = 0;
  44   1          for (j=0;j<255;j++)
  45   1         {
  46   2          for (i=0; i<250; i++);
  47   2         }
  48   1      }
  49           void ISRSER() interrupt 4 using 3 //串口中断
  50            {
  51   1          uchar a;     
  52   1        if (RI)
  53   1          {       
  54   2             RI=0;
  55   2                 a=SBUF;
C51 COMPILER V7.06   SY_003_1                                                              09/25/2008 14:58:33 PAGE 2   

  56   2              dis_buf[2] = LedCode[a/16];             // 第一位
  57   2              dis_buf[3] = LedCode[a%16];             // 第二位
  58   2             SBUF=255-a;                  //取反
  59   2                 while(TI==0);
  60   2              dis_buf[0] = LedCode[(255-a)/16];       // 第三位
  61   2              dis_buf[1] = LedCode[(255-a)%16];       // 第四位
  62   2      
  63   2                 TI=0;        
  64   2          }
  65   1        }
  66           void display() interrupt 1  //显示扫描中断
  67            {
  68   1              TH0 = 0xFC;
  69   1              TL0 = 0x17;
  70   1              P2 = 0xff;                                                      // 先关闭所有数码管
  71   1              P0 = dis_buf[dis_index];                        // 显示代码传送到P0口
  72   1              P2 = dis_digit;                                         // 
  73   1              dis_digit = _crol_(dis_digit,1);        // 位选通值左移, 下次中断时选通下一位数码管
  74   1          if(dis_digit==0xef) dis_digit=0xfe;
  75   1          dis_index++;
  76   1          dis_index &= 0x03;
  77   1        }
  78          void main()
  79          {
  80   1          delay();//延时
  81   1              SCON|=0x50;  /* mode 1: 8-bit UART, enable receiver */ 
  82   1              TMOD|=0x21; /* timer 1 mode 2: 8-Bit reload */ 
  83   1              PCON|=0x80; // baud x2 
  84   1              TH1=0xfa;   //串口波特率初始化 0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200  
  85   1              TH0=0XFC;
  86   1          TL0=0X17;
  87   1          TR0=1;
  88   1          TR1=1;
  89   1              EA=1;
  90   1          ET0=1;
  91   1              ES=1;  // Turn on Series Interrupte;
  92   1          dis_index=0;
  93   1              dis_buf[0] = LedCode[0];                // 第一位
  94   1              dis_buf[1] = LedCode[0];                // 第二位
  95   1              dis_buf[2] = LedCode[0];                // 第三位
  96   1              dis_buf[3] = LedCode[0];                // 第四位
  97   1              P0 = dis_buf[dis_index];                // 显示代码传送到P0口
  98   1          P2 = dis_digit;
  99   1              while(1){;}
 100   1      }
 101          
 102          


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