STC12C5A60S2串口演示程序

发布者:婉如Chanel最新更新时间:2018-02-01 来源: eefocus关键字:STC12C5A60S2  串口演示 手机看文章 扫描二维码
随时随地手机看文章

#include "reg51.h" 

#define FOSC 18432000L 
#define BAUD 115200 
#define NONE_PARITY     0   //无校验位 
#define ODD_PARITY      1   //奇校验 

#define EVEN_PARITY     2   //偶校验 
#define MARK_PARITY     3   //标记校验 
#define SPACE_PARITY    4   //空校验 

#define PARITYBIT EVEN_PARITY 

#define S2RI  0x01 
#define S2TI  0x02 
#define S2RB8 0x04 
#define S2TB8 0x08 

sfr AUXR  = 0x8e; 
sfr S2CON = 0x9a; 
sfr S2BUF = 0x9b; 
sfr BRT   = 0x9c; 
sfr IE2   = 0xaf; 

bit busy; 

void SendData(char dat); 
void SendString(char *s); 

void main() 

#if (PARITYBIT == NONE_PARITY) 
    S2CON = 0x5a;               //8位可变波特率 (无校验位) 
#elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY) 
    S2CON = 0xda;               //9位可变波特率,校验位初始为1 
#elif (PARITYBIT == SPACE_PARITY) 
    S2CON = 0xd5;               //9位可变波特率,校验位初始为0 
#endif 

    BRT = -(FOSC/32/BAUD);      //设置独立波特率发生器的重载初值 
    AUXR = 0x14;                //独立波特率发生器工作在1T模式 
    IE2 = 0x01;                 //使能串口2中断 
    EA = 1;                     //开总中断 

    SendString("STC12C5A60S2\r\nUART2 Test !\r\n"); 
    while(1); 


void Uart2() interrupt 8 using 1 

    if (S2CON & S2RI) 
    { 
        S2CON &= ~S2RI;         //清除接收完成标志 
        P0 = S2BUF;             //P0显示串口数据 
        P2 = (S2CON & S2RB8);   //P2.2显示校验位 
    } 
    if (S2CON & S2TI) 
    { 
        S2CON &= ~S2TI;         //清除发送完成标志 
        busy = 0; 
    } 


void SendData(char dat) 

    while (busy);               //等待上个数据发送完成 
    ACC = dat;                  //取得偶校验位P 
    if (P)                        //根据P来设置串口数据的校验位 
    { 
#if (PARITYBIT == ODD_PARITY) 
        S2CON &= ~S2TB8;        //置校验位为0 
#elif (PARITYBIT == EVEN_PARITY) 
        S2CON |= S2TB8;         //置校验位为1 
#endif 
    } 
    else 
    { 
#if (PARITYBIT == ODD_PARITY) 
        S2CON |= S2TB8;         //置校验位为1 
#elif (PARITYBIT == EVEN_PARITY) 
        S2CON &= ~S2TB8;        //置校验位为0 
#endif 
    } 
    busy = 1; 
    S2BUF = ACC;                //发送数据 


void SendString(char *s) 

    while (*s)                  //判断字符串结束标志 
    { 
        SendData(*s++);         //发送字符 
    } 


关键字:STC12C5A60S2  串口演示 引用地址:STC12C5A60S2串口演示程序

上一篇:STC12C5A60S2汇编(ADC查询方式)示例程序
下一篇:STC12C5A60S2控制AT24C04 C程序

推荐阅读最新更新时间:2024-03-16 15:54

STC12C5A60S2的ADC+PWM功能
STC12C5A60S2单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D转换器,速度可达到250 KHz(25万次/秒)。脉宽调制(PWM)是一种使用程序来控制波形占空比、周期、相位波形的技术。STC12C5A60S2单片机的PAC模块可以通过程序设定,使其工作于8位PWM模式。 下面是一段将ADC和PWM结合起来应用的程序: /*************************************************************** 时间:2012.12.1 晶振:12MHz 功能描述:AD采集电位器的电压信号,然后信号以PWM信号输出控制LED的亮度(调节电位器)
[单片机]
stc12c5a60s2最小系统原理图
要使一块单片机芯片工作起来最简陋的接线方式就是单片机的最小系统。 STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。 stc12c5a60s2引脚及功能 VCC:供电电压 ;GND:接地; P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P0口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的
[单片机]
<font color='red'>stc12c5a60s2</font>最小系统原理图
STC12C5A60S2自制逻辑分析仪
逻辑分析仪对于开发者来说很重要,现在我们用STC12C5A60S2单片机制作一个 制作资料和上位机程序下载: http://www.51hei.com/bbs/dpj-20393-1.html ,下面是单片机高速采样程序: #include STC12C5A60S2.h //====================================================================================== //====================================================================================== v
[单片机]
用<font color='red'>STC12C5A60S2</font>自制逻辑分析仪
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved