• 大小: 29KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2023-02-06
  • 语言: 其他
  • 标签: STC12C60S2  双串口  51  

资源简介

STC12C60S2单片机双串口程序,经本人在Keil UV3中测试,下载后没有问题。

资源截图

代码片段和文件信息

#include “common.h“
#include “main_ram.h“

#if 0
void put_char(unsigned char ch){
   SBUF = ch;
   while(!TI);
   TI = 0;
}
#endif

void put_char_s2(unsigned char ch){
   S2BUF = ch;
   while((S2CON & 0x02) == 0);
   S2CON = S2CON & (~0x02);    //S2CON:  S2SM0  S2SM1  S2SM2 S2REN  S2TB8  S2RB8   S2TI    S2RI
}

/* DMX512软件控台转发程序 晶振24M */
void main(void){
   unsigned int i;
   
   DIM_NO = 0;
   data_p = &dmx_rec_buf[0];
   counter = 512;
   SOFT_C = 1;
   
   AUXR  = 0x54;      //定时器0: 12T  定时器1: 1T  独立波特率发生器运行 独立波特率发生器工作在1T模式 

   TMOD &= 0x0f;
   TMOD |= 0x20;      //定时器1: 1T 8位重载定时模式 
   TH1   = 0xFF;
   TL1   = 0xFF;

   
   SCON  = 0xD0;      //SM0 SM1 SM2 REN 串行口工作在方式39位可变波特率 750K  TB8 = 0
   S2CON = 0xD8;      //SM0 SM1 SM2 REN 串行口工作在方式39位可变波特率 250K  TB8 = 1
   BRT   = 0xFD;      //独立波特率寄存器 串口2波特率250kbps

   //BRT  = 243;      //独立波特率寄存器
   //AUXR = 0x15;     //独立波特率576001T

   TMOD &= 0xf0;
   TMOD |= 0x01;      //设置定时器0模式为:16位定时模式 
   TH0 =  0x15;       //定时值(uS):30000 
   TL0 =  0xA2;
   //TH0 =  0xB1;     //定时值(uS):10000 
   //TL0 =  0xE0;

   //PCON |= 0x80;    //FF  1.5MBPS  FD 500K
   PCON &= 0x7F;      //FF  750KBPS  FD 250K
TCON = 0x50;       //TR1 = 1  TR0 = 1

IE   = 0x92;
   PS   = 1;

   //CCAPM0 = 0x49;   //16位软件定时器模式
   CCAPM0 = 0x00;     //无操作
   CCAPM1 = 0x00;     //无操作
   CH     = 0;
   CL     = 0;
   CMOD   = 0x00;     //PCA时钟源为 fosc/12  不允许CF产生中断
   //CMOD   = 0x01;   //PCA时钟源为 fosc/12  允许CF产生中断
   //CCON   = 0;

   CCAP0L = 0x52;     //FFEC  8us
   CCAP0H = 0xFF;     //FF52  88us
   //CCON   = 0x40;   //CCON: CF CR - - - - CCF1 CCF0 

P1M1 = 0x00;
P1M0 = 0x00;
//P3M1 = 0x7C;
//P3M0 = 0x00;

#if 0
   //测试代码
   for(i = 1; i<512; ++i){
   dmx_send_buf[i] = 0x55;
}
dmx_send_buf[0] = 0x00;
//dmx_send_buf[253] = 0x12;
//dmx_send_buf[254] = 0x13;
//dmx_send_buf[255] = 0x14;
#endif

   while(1){
      if(CTL_A){     // 30ms
         CTL_A = 0;

#if 0
         //测试代码
         TB8 = 1;
         //for(i = 0; i < 512; ++i)
         for(i = 0; i < 3; ++i)
            put_char(dmx_send_buf[i]);
         //put_char(0x00);
         //put_char(0x55);
         //put_char(0x55);
#endif
         //进入PCA中断标志
         Flag_PCA = 0;
         //DMX512数据包发送程序段
         CCON = 0;
         CL = 0x52;
         CH = 0xFF;
         P1_3 = 0;
         CR = 1;
         while(CF==0);
         CCON = 0;
         P1_3 = 1;
         CL = 0xEC;
         CH = 0xFF;
         CR = 1;
         while(CF==0);
         CCON = 0;
         for(i = 0; i < 512; ++i){
            put_char_s2(dmx_rec_buf[i]);
         }
         //进入PCA中断则停机
         while(Flag_PCA==1); 
#if 0    
         //测试代码   
         for(i = 509; i < 512; ++i){
            put_char_s2(dmx_rec_buf[i]);
         }
#endif
      }
   }
}



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .......     13646  2010-02-03 20:38  STC12C5A08S2\debug\STC12C5A08S2.uvproj

     文件       1155  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2.plg

     文件         90  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2.lnp

     文件      11606  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2.M51

     文件       1082  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2.hex

    .......     56172  2010-02-03 21:08  STC12C5A08S2\debug\STC12C5A08S2_uvopt.bak

     文件       5988  2010-02-03 21:09  STC12C5A08S2\debug\main.lst

     文件       5544  2010-02-03 21:09  STC12C5A08S2\debug\main.obj

     文件       2026  2010-02-03 21:09  STC12C5A08S2\debug\serial_isr.lst

     文件       2592  2010-02-03 21:09  STC12C5A08S2\debug\serial_isr.obj

     文件       2451  2010-02-03 21:09  STC12C5A08S2\debug\main_isr.lst

     文件       2793  2010-02-03 21:09  STC12C5A08S2\debug\main_isr.obj

     文件       9474  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2

    .......     56176  2010-02-03 21:09  STC12C5A08S2\debug\STC12C5A08S2.uvopt

     文件       3244  2010-02-03 20:59  STC12C5A08S2\source\common.h

     文件       3080  2010-02-03 21:09  STC12C5A08S2\source\main.c

     文件         43  2010-02-03 20:57  STC12C5A08S2\source\main.h

     文件        753  2010-02-03 21:08  STC12C5A08S2\source\serial_isr.c

     文件        197  2010-02-03 20:55  STC12C5A08S2\source\serial_isr.h

     文件       5387  2007-05-31 10:54  STC12C5A08S2\source\STARTUP.A51

     文件       1048  2010-02-03 20:57  STC12C5A08S2\source\main_isr.c

     文件        281  2010-02-03 20:56  STC12C5A08S2\source\main_ram.h

     目录          0  2010-02-03 19:18  STC12C5A08S2\debug

     目录          0  2010-02-03 19:18  STC12C5A08S2\source

     目录          0  2010-02-03 19:18  STC12C5A08S2

----------- ---------  ---------- -----  ----

               184828                    25


评论

共有 条评论