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

📄 www.ourhc.cn.lst

📁 STC15F104E单片机最小系统开发板
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 23:08:27 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:STC15F104E系列单片机之串口、外部中断、掉电存储、定时器同时应用程序
   5          使用芯片:STC15F104E系列单片机
   6          晶振:11.0592MHZ
   7          波特率:9600
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  15          
  16          *********************************************************************/
  17          /********************************************************************
  18          单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.
  19          单片机接收PC机发送的数据码表如下:
  20          
  21          01、开:PC发送'A'; 
  22          02、关:PC发送'B'; 
  23          03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开 ‘B’表示关;
  24          04、继电器状态取反:PC发送D     继电器状态取反
  25          *********************************************************************/
  26          #include "reg52.h" 
  27          #include <intrins.H>
  28          #define uchar unsigned char //宏定义字符型变量
  29          #define uint  unsigned int      //宏定义整型变量
  30          /********************************************************************
  31                                 eeprom函数声明
  32          *********************************************************************/
  33          extern void IapIdle();                                        //操作函数
  34          extern uchar IapReadByte(uint addr);              //读取函数
  35          extern void IapProgramByte(uint addr,uchar dat);  //写入函数
  36          extern void IapEraseSector(uint addr);            //擦除函数
  37          /********************************************************************
  38                                      波特率设定
  39          *********************************************************************/
  40          //#define BAUD 0XF400  //1200bps@ 11.0592MHZ
  41          //#define BAUD 0XFA00  //2400bps@ 11.0592MHZ
  42          //#define BAUD 0XFD00  //4800bps@ 11.0592MHZ
  43          #define BAUD 0XFE80  //9600bps@ 11.0592MHZ
  44          //#define BAUD 0XFF40  //19200bps@ 11.0592MHZ
  45          //#define BAUD 0XFFA0  //38400bps@ 11.0592MHZ
  46          uchar miao,fen,times;
  47          uchar dat;      //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
  48          sbit P33=P3^3;  //定义输出脚
  49          
  50          /********************************************************************
  51                                      定义特殊寄存器
  52          *********************************************************************/
  53          sfr AUXR  =  0x8E;    //辅助寄存器
  54          sbit RXB=P3^0;
  55          sbit TXB=P3^1;
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 23:08:27 PAGE 2   

  56          /********************************************************************
  57                                     定义数据类型
  58          *********************************************************************/
  59          uchar TBUF,RBUF;
  60          uchar TDAT,RDAT;
  61          uchar TCNT,RCNT;
  62          uchar TBIT,RBIT;
  63          uint TING,RING;
  64          uint TEND,REND;
  65          
  66          void UART_INIT(); //声明函数
  67          
  68          uchar t,r;                //定义数据类型
  69          uchar but[16];    //数据存储数组
  70          /********************************************************************
  71                                      寄存器设置
  72          *********************************************************************/ 
  73          sfr IAP_DATA  =0xc2;     //数据寄存器
  74          sfr IAP_ADDRH =0xc3;     //地址寄存器
  75          sfr IAP_ADDRL =0xc4;     //地址寄存器
  76          sfr IAP_CMD   =0xc5;     //命令寄存器
  77          sfr IAP_TRIG  =0xc6;     //触发寄存器
  78          sfr IAP_CONTR =0xc7;     //擦除寄存器
  79          /********************************************************************
  80                                      命令定义
  81          *********************************************************************/
  82          #define CMD_IDLE     0   //EEPROM无操作
  83          #define CMD_READ     1   //读取字节
  84          #define CMD_PROGRAM  2   //写入字节
  85          #define CMD_ERASE    3   //擦除字节
  86          /********************************************************************
  87                                 编程周期由晶振决定
  88          *********************************************************************/
  89          //#define ENABLE_IAP 0X80        //编程周期由晶振决定(如果<30MHZ选用此项)
  90          //#define ENABLE_IAP 0X81        //编程周期由晶振决定(如果<24MHZ选用此项)
  91          //#define ENABLE_IAP 0X82        //编程周期由晶振决定(如果<20MHZ选用此项)
  92            #define ENABLE_IAP 0X83        //编程周期由晶振决定(如果<12MHZ选用此项)
  93          //#define ENABLE_IAP 0X84        //编程周期由晶振决定(如果<6MHZ选用此项)
  94          //#define ENABLE_IAP 0X85        //编程周期由晶振决定(如果<3MHZ选用此项)
  95          //#define ENABLE_IAP 0X86        //编程周期由晶振决定(如果<2MHZ选用此项)
  96          //#define ENABLE_IAP 0X87        //编程周期由晶振决定(如果<1MHZ选用此项)
  97          
  98          #define IAP_ADDRESS 0X0000                    //内部EEPROM地址
  99          /********************************************************************
 100                                      延时函数
 101          *********************************************************************/
 102          void delay(uchar t)
 103          {
 104   1        uchar i,j;
 105   1         for(i=0;i<t;i++)
 106   1         {
 107   2               for(j=13;j>0;j--);
 108   2               { ;
 109   3               }
 110   2         }
 111   1      }
 112          /********************************************************************
 113                                      定时器0初始化函数
 114          *********************************************************************/
 115          void TIMER0_INIT(void)
 116          {
 117   1              TMOD=0X00;         //定时器T0设定
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 23:08:27 PAGE 3   

 118   1              AUXR|=0X80;        //辅助寄存器
 119   1              TL0=BAUD;          //十六位寄存器
 120   1              TH0=BAUD>>8;   //十六位寄存器
 121   1              TR0=1;             //开定时器
 122   1              ET0=1;
 123   1              PT0=1;
 124   1      }
 125          /********************************************************************
 126                                      定时器1初始化函数
 127          *********************************************************************/
 128          void TIMER1_INIT(void)
 129          {
 130   1              TH1=(65536-10000)/256;   //对TH1 TL1赋值
 131   1              TL1=(65536-10000)%256;
 132   1              ET1=1;
 133   1              TR1=1;                   //开始定时
 134   1      }                       
 135          /********************************************************************
 136                                      外部中断0初始化
 137          *********************************************************************/
 138          void Init_exint(void)
 139          {
 140   1         INT0=1;   //下降沿触发
 141   1         IT0=1;
 142   1         EX0=1;
 143   1      }
 144          /********************************************************************
 145                        功能:串口初始化,波特率9600,方式1
 146          *********************************************************************/
 147          void UART_INIT()
 148          {
 149   1              TING=0;
 150   1              RING=0;
 151   1              
 152   1              TEND=1;
 153   1              REND=0;
 154   1              
 155   1              TCNT=0;
 156   1              RCNT=0;
 157   1      }
 158          
 159          /********************************************************************
 160                                 函数初始化
 161          *********************************************************************/
 162          void IapIdle();                                       //操作函数
 163          uchar IapReadByte(uint addr);             //读取函数
 164          void IapProgramByte(uint addr,uchar dat); //写入函数
 165          void IapEraseSector(uint addr);           //擦除函数
 166          
 167          /********************************************************************
 168                                      操作函数
 169          *********************************************************************/
 170          void IapIdle()
 171          {
 172   1      IAP_CONTR=0;
 173   1      IAP_CMD=0;
 174   1      IAP_TRIG=0;
 175   1      IAP_ADDRH=0X80;
 176   1      IAP_ADDRL=0;
 177   1      }
 178          
 179          /********************************************************************
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/11/2012 23:08:27 PAGE 4   

 180                                      读取一个字节函数
 181          *********************************************************************/
 182          uchar IapReadByte(uint addr)
 183          {
 184   1      uchar dat;  
 185   1      IAP_CONTR=ENABLE_IAP;
 186   1      IAP_CMD=CMD_READ;
 187   1      IAP_ADDRL=addr;
 188   1      IAP_ADDRH=addr>>8;
 189   1      IAP_TRIG=0X5A;
 190   1      IAP_TRIG=0XA5;
 191   1      _nop_();
 192   1      _nop_();
 193   1      _nop_();
 194   1      dat=IAP_DATA;
 195   1      IapIdle();
 196   1      return dat;

⌨️ 快捷键说明

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