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

📄 main.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  10/20/2006 11:28:35 PAGE 1   


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

stmt level    source

   1          #include <stdio.h>
   2          #include <absacc.h>
   3          #include <intrins.h>
   4          #include <./Atmel/at89x52.h>
   5          #include "source.h"
   6          #define MAX_SBUF 10
   7          unsigned char sbuf[MAX_SBUF];//串口缓冲区
   8          unsigned char shead=0; //串口缓冲区的存储数据位置
   9          unsigned char stail=0; //串口缓冲区的存读数据位置
  10          void Enable_Int(unsigned char i);
  11          void Disable_Int(unsigned char i);
  12          main(void){
  13   1              IE=0X40;//禁止所有中断
  14   1              EX0=1;//使能外部中断0
  15   1              IT0=0;//外部中断0,电平触发。
  16   1              EA=1;  /* 使能中断 */   
  17   1              XBYTE[BAUD_HPORT]=BAUD_H;//设置串口波特率分频的高8位
  18   1          XBYTE[BAUD_LPORT]=BAUD_L;//设置串口波特率分频的低8位,把波特率设置为19.2Kbps
  19   1              Enable_Int(0);//使能扩展串口发送中断
  20   1              Enable_Int(1);//使能扩展串口接收中断
  21   1              while(1){
  22   2                      if(stail!=shead){//数据缓冲区不为空
  23   3                        Enable_Int(0);//打开发送中断
  24   3              }
  25   2              }
  26   1      }
  27          void Enable_Int(unsigned char i){//使能扩展中断i
  28   1              unsigned char temp;
  29   1              temp=XBYTE[INT_ENA]; //读出使能寄存器的状态
  30   1              temp |=1<<i;//要对应的要使能比特写1
  31   1              XBYTE[INT_ENA]=temp;//把temp值给使能寄存器的
  32   1      }
  33          void Disable_Int(unsigned char i){//禁止扩展中断i
  34   1              unsigned char temp;
  35   1              unsigned char mask;
  36   1              mask=1<<i;
  37   1              mask=~mask; //把要屏幕中断的比特设置0,其他比特为1
  38   1              temp=XBYTE[INT_ENA];//读出使能寄存器的状态
  39   1              temp &=mask;
  40   1              XBYTE[INT_ENA]=temp;//把使能寄存器相应的比特设置为0
  41   1      }
  42          void int0() interrupt 0 {//C51外部中断0的中断处理函数
  43   1              unsigned char stat;
  44   1              stat=XBYTE[INT_PEND];//读中断状态
  45   1              if(stat&0x01){//扩展串口发送中断
  46   2                 if(stail!=shead){//发送缓冲区不为空
  47   3              XBYTE[SDAT_PORT]=sbuf[stail];//发送接收到的串口数据
  48   3              stail++;       //把读位置加1    
  49   3              stail %=MAX_SBUF;
  50   3             }
  51   2             else{//发送缓冲区为空
  52   3                  Disable_Int(0);//禁止扩展串口发送中断
  53   3             }
  54   2          }
  55   1              if(stat&0x02){//扩展串口接收中断
C51 COMPILER V7.06   MAIN                                                                  10/20/2006 11:28:35 PAGE 2   

  56   2                  sbuf[shead]=XBYTE[SDAT_PORT];//读串口接收数据
  57   2                  shead ++; //把写位置加1     
  58   2                  shead %=MAX_SBUF;
  59   2          }
  60   1      }
  61          


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