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

📄 uartcom1.lst

📁 此代码实现功能为:在philips P89LPC935单片机上实现红外遥(对应红外发送芯片为:HT6222)控解码接收
💻 LST
📖 第 1 页 / 共 2 页
字号:
 155   1          //OCRAH=0x00;                     //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比为50%
 156   1          //OCRAL=0xd2;
 157   1      
 158   1          TOR2H=0x03;                     //定时器重装值
 159   1          TOR2L=0x4a;
 160   1          OCRAH=0x01;                     //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比为50%
 161   1          OCRAL=0xa5;
 162   1          TCR21=0x85;                     //PLL预分频为5+1
 163   1          CCCRA=1;                        //非反相的PWM,
 164   1      
 165   1          TCR20=0;
 166   1          PLEEN=1;
 167   1          while(!PLEEN);
 168   1          TCR20|=3;                       //启动定时器,非对称PWM模式
 169   1      }
 170          
 171          
 172          /*******************************************************************
 173          ** 函 数 名: UART1_Init()
 174          ** 输    入: 无
 175          ** 输    出: 无
 176          ** 描    述: UART初始化,波特率9600bit/s
 177          ** 全局变量: 无
 178          ** 调用模块: 无
 179          ** 被调模块: 
C51 COMPILER V7.09   UARTCOM1                                                              12/05/2005 10:23:19 PAGE 4   

 180          **                       main           -- 主循环处理函数
 181          ** 作    者: 金雨和
 182          ** 创建日期: 2005年11月16日
 183          ** 修    改:
 184          **        日  期        版本      修改人     修改内容                            
 185          **         1.
 186          ********************************************************************/
 187          void UART1_Init()
 188          {   
 189   1          //PCON=0;
 190   1          //SSTAT=0;              //双缓冲禁止,中断禁止,采用查询方式发送和接收  
 191   1              SSTAT=0xE0;                     //选择独立的Tx/Rx中断
 192   1          SCON=0x50;              //串口模式1,接收禁止
 193   1          //PCON|=0x40;           //SMOD0=1,SCON的位7作为FE
 194   1          BRGCON=0;
 195   1          BRGR1=0x04;                         //0x02;//波特率为9600bits/s
 196   1              BRGR0=0xd2;             //0xf0;//波特率为9600bits/s     
 197   1          BRGCON=3;               //启动UART的波特率发生器
 198   1      
 199   1              ESR=1;                                  //ESR=Enable Serial Recieve 
 200   1      //      EST=1;                                  //EST=Enable Serial Transmit 
 201   1              EA=1;                                   //使能中断      
 202   1      }
 203          
 204          
 205          /*******************************************************************
 206          ** 函 数 名: Delay()
 207          ** 输    入: 
 208          **                       k              -- 延时时间
 209          ** 输    出: 无
 210          ** 描    述: 延时0.1*k秒(振荡器为6MHz)
 211          **                       注意:如果入口参数k等于0,则不延时而直接返回。
 212          ** 全局变量: 无
 213          ** 调用模块: 无
 214          ** 被调模块: 无
 215          ** 作    者: 金雨和
 216          ** 创建日期: 2005年11月16日
 217          ** 修    改:
 218          **        日  期        版本      修改人     修改内容                            
 219          **         1.
 220          ********************************************************************/
 221          void Delay(uchar k)
 222          {       
 223   1          uchar i,j;
 224   1          if(k==0)
 225   1          {   
 226   2              return;
 227   2          }
 228   1              for(;k;k--)
 229   1              {       
 230   2              for(j=200;j;j--)            //延时0.1S
 231   2                      {       
 232   3                  for(i=250;i;i--)
 233   3                              {       
 234   4                      //nop();
 235   4                                      //nop();
 236   4                                      //nop();
 237   4                                      ;//nop();
 238   4                              }
 239   3                      }
 240   2              }
 241   1      }
C51 COMPILER V7.09   UARTCOM1                                                              12/05/2005 10:23:19 PAGE 5   

 242          
 243          
 244          /*******************************************************************
 245          ** 函 数 名: UART1_Rcv_ISR()
 246          ** 输    入: 无
 247          ** 输    出: 无
 248          ** 描    述: C51串口1接收中断处理函数.
 249          ** 全局变量: 无
 250          ** 调用模块: 
 251          **                       UART1SendData          -- 串口1字符串发送函数
 252          ** 被调模块: 无
 253          ** 作    者: 金雨和
 254          ** 创建日期: 2005年11月29日
 255          ** 修    改:
 256          **        日  期        版本      修改人     修改内容                            
 257          **         1.
 258          ********************************************************************/
 259          void UART1_Rcv_ISR() interrupt 4
 260          {
 261   1              uchar temp;
 262   1              uchar sndBuf[10];
 263   1                                              //;当接收完一个字节RI置1进入Recieve中断 
 264   1              EA=0; 
 265   1              // while(!RI)   //等待接收完时RI置位 
 266   1              temp=SBUF;              //保存所读取的数据 
 267   1              RI=0;                   //RI清0以等待下次发送 
 268   1      
 269   1      #if 0
                      SBUF = temp;            //发送数据 
                      while(!TI);     //当TI为1时发送完毕 
                      TI=0;                   //TI清0准备发送 
              #endif
 274   1      
 275   1              if(temp == 0x0D)                                //回车键
 276   1                      UART1SendData("\r\n", 2);
 277   1              else if(temp == 0x0A)                   //换行
 278   1                      UART1SendData("\r\n", 2);
 279   1              else if(temp == 0x08)                   //backspace键
 280   1              {
 281   2                      sndBuf[0] = 0x08;
 282   2                      sndBuf[1] = ' ';
 283   2                      sndBuf[2] = 0x08;
 284   2                      UART1SendData(sndBuf, 3);
 285   2              }
 286   1              else
 287   1                      UART1SendData(&temp,1);     //发送接收到的字符
 288   1      
 289   1              g_ucI2CSendBuf[0] = UART1;
 290   1              g_ucI2CSendBuf[1] = temp;
 291   1              g_ucI2CSendBuf_Len = 2;
 292   1              g_ucI2CSendBuf_offset = 0;
 293   1              IICSendIntToCPU();
 294   1      
 295   1              EA=1; 
 296   1      }
 297          //-------------------------------- 
 298          //在有的时候会出现仅发送一次然后程序卡死这种现象但是如果把程序中
 299          //指令的流程稍微修改一下把TI=0移到 while(!TI)的后面程序可连续接收发送 SBUF=temp; 
 300          //发送数据 while(!TI); //当TI为1时发送完毕 TI=0; //TI清0准备下一次发送


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.09   UARTCOM1                                                              12/05/2005 10:23:19 PAGE 6   

   CODE SIZE        =    321    ----
   CONSTANT SIZE    =      3    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   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 + -