没有合适的资源?快使用搜索试试~ 我知道了~
单片机与计算机的串口通信 单片机与计算机的串口通信
资源推荐
资源详情
资源评论
//------------------------------------------------------------------
//单片机与计算机的串口通信
//单片机接收计算机发过来的字符串,回发字符串.
//发送期间中断控制LED灯闪烁
//采用外部晶振22.1184MHz 使用定时器1,方式2产生波特率,SMOD = 0或者1
//定时器初值X=256-SYSCLK*(SMOD+1)/(BAUDRATE*384)
//------------------------------------------------------------------
#include <C8051F310.h>
#include <stdio.h>
sfr16 TMR3RL = 0x92; //定时器3重装载寄存器
sfr16 TMR3 = 0x94; //定时器3计数器
#define uchar unsigned char
#define uint unsigned int
//------------------------------------------------------------------
//参数设置区
//------------------------------------------------------------------
#define BAUDRATE 9600 //波特率bps
#define CLKOUT 22118400 //外部晶振,修改也要修改OSCXCN
#define SMODVAL 0 //SMOD的值,修改请也修改PCONVAL
#define PCONVAL 0x00 //PCON的值,=0x00时SMOD0=0; =0x80时SMOD0=1
#define TXVAL (256-CLKOUT*(SMODVAL+1)/BAUDRATE/384) //定时器初值
#define MAX_LEN 10 //每次接收/发送字符串的长度
//------------------------------------------------------------------
//全局变量
//------------------------------------------------------------------
sbit LED = P1^6; //LED '1'亮 '0'灭
bit readFlag = 0; //读标志
uchar readCounts = 0; //已经读取的字符个数,与MAX_LEN比较
uchar idata trdata[MAX_LEN]; //要接收/发送的字符串
//------------------------------------------------------------------
//单片机与计算机的串口通信
//单片机接收计算机发过来的字符串,回发字符串.
//发送期间中断控制LED灯闪烁
//采用外部晶振22.1184MHz 使用定时器1,方式2产生波特率,SMOD = 0或者1
//定时器初值X=256-SYSCLK*(SMOD+1)/(BAUDRATE*384)
//------------------------------------------------------------------
#include <C8051F310.h>
#include <stdio.h>
sfr16 TMR3RL = 0x92; //定时器3重装载寄存器
sfr16 TMR3 = 0x94; //定时器3计数器
#define uchar unsigned char
#define uint unsigned int
//------------------------------------------------------------------
//参数设置区
//------------------------------------------------------------------
#define BAUDRATE 9600 //波特率bps
#define CLKOUT 22118400 //外部晶振,修改也要修改OSCXCN
#define SMODVAL 0 //SMOD的值,修改请也修改PCONVAL
#define PCONVAL 0x00 //PCON的值,=0x00时SMOD0=0; =0x80时SMOD0=1
#define TXVAL (256-CLKOUT*(SMODVAL+1)/BAUDRATE/384) //定时器初值
#define MAX_LEN 10 //每次接收/发送字符串的长度
//------------------------------------------------------------------
//全局变量
//------------------------------------------------------------------
sbit LED = P1^6; //LED '1'亮 '0'灭
bit readFlag = 0; //读标志
uchar readCounts = 0; //已经读取的字符个数,与MAX_LEN比较
uchar idata trdata[MAX_LEN]; //要接收/发送的字符串
//------------------------------------------------------------------
//子函数声明
//------------------------------------------------------------------
void SYSCLK_Init(void); //系统时钟初始化
void PORT_Init(void); //端口初始化
void UART0_Init(void); //串口UART0初始化
void Send_Char(uchar ch); //发送单个字符
void Send_String(uchar * str, uint len); //发送一个字符串
void UART0_ISR(); //串口中断服务程序,接收字符
void Timer3_Init(uint counts); //定时器3初始化
void Timer3_ISR(void); //定时器3中断服务程序
//------------------------------------------------------------------
//主函数
//------------------------------------------------------------------
void main(void)
{
WDTCN = 0xde; //禁止看门狗 disable watchdog timer
WDTCN = 0xad;
SYSCLK_Init(); //时钟初始化
PORT_Init(); //端口初始化
UART0_Init(); //串口初始化
Timer3_Init(CLKOUT/12/10); //定时器初始化
EA = 1; //开全局中断
while(1)
{
if(readFlag) //已经读取
{
readFlag = 0; //清零
Send_String(trdata,MAX_LEN); //发送字符串
}
}
//------------------------------------------------------------------
void SYSCLK_Init(void); //系统时钟初始化
void PORT_Init(void); //端口初始化
void UART0_Init(void); //串口UART0初始化
void Send_Char(uchar ch); //发送单个字符
void Send_String(uchar * str, uint len); //发送一个字符串
void UART0_ISR(); //串口中断服务程序,接收字符
void Timer3_Init(uint counts); //定时器3初始化
void Timer3_ISR(void); //定时器3中断服务程序
//------------------------------------------------------------------
//主函数
//------------------------------------------------------------------
void main(void)
{
WDTCN = 0xde; //禁止看门狗 disable watchdog timer
WDTCN = 0xad;
SYSCLK_Init(); //时钟初始化
PORT_Init(); //端口初始化
UART0_Init(); //串口初始化
Timer3_Init(CLKOUT/12/10); //定时器初始化
EA = 1; //开全局中断
while(1)
{
if(readFlag) //已经读取
{
readFlag = 0; //清零
Send_String(trdata,MAX_LEN); //发送字符串
}
}
剩余6页未读,继续阅读
资源评论
ziwei_zheng
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功