历史上的今天
今天是:2025年07月30日(星期三)
2018年07月30日 | PIC单片机精通_串口通信模块C实现
2018-07-30 来源:eefocus
1.串口通讯头/定义文件 usart.h
#ifndef _SERIAL_H_
#define _SERIAL_H_
#define BAUD 9600
#define FOSC 9216000L
#define NINE 0 /* Use 9bit communication? FALSE=8bit */
#define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))
#define HIGH_SPEED 1
#if NINE == 1
#define NINE_BITS 0x40
#else
#define NINE_BITS 0
#endif
#if HIGH_SPEED == 1
#define SPEED 0x4
#else
#define SPEED 0
#endif
#if defined(_16F87) || defined(_16F88)
#define RX_PIN TRISB2
#define TX_PIN TRISB5
#else
#define RX_PIN TRISC7
#define TX_PIN TRISC6
#endif
/* Serial initialization */
//'\'是对函数内属性的定义 不可缺少
#define init_comms()\
RX_PIN = 1; \
TX_PIN = 1; \
SPBRG = DIVIDER; \
RCSTA = (NINE_BITS|0x90); \
TXSTA = (SPEED|NINE_BITS|0x20)
void putch(unsigned char);
unsigned char getch(void);
unsigned char getche(void);
#endif
2.串口通讯源/实现文件 usart.c
/******************************************/
/*Author:Shen Chucu All Rights Reserved!**
/*Tsinghua University
/*2016-11-15
/********************************************/
#include
#include
#include "usart.h"
__CONFIG(0x3ffa);
void delay(unsigned int x);
static int label=0; //不做事件响应
void main()
{
INTCON=0x00;
GIE=1;
PEIE=1;
RCIE=1;
init_comms();
CREN=1;
SPEN=1;
while(1)
{//等待中断 并进行事件响应设定
if(label==1)
{
printf("OK");
label = 0; //发送一个回馈信号即可
delay(50);
}
if(label==2)
{
printf("ERROR");
label = 0; //发送一个回馈信号即可
delay(50);
}
}
}
void interrupt IsReceive()
{
if(RCIE&&RCIF==1) //接受中断使能位 + 接收中断标志位
{
unsigned char temp=RCREG; //把上位机发送的数据保存下来
if(temp=='S')
{
label=1; //发送数据标志 1
}
else if(temp=='E')
{
label=0; //发送数据标志 0
}
else
label=2; //发送数据标志 2
}
}
void delay(unsigned int x)
{
unsigned int a,b; //延时时间110x
for(a=x;a>1;a--)
for(b=110;b>1;b--)
;
}
史海拾趣
|
《阿凡达》中人类在遥远的潘多拉星球上可以在广阔的地域之间高速传输数据和通信,用得可能将是未来的4G或5G技术,虽然CES没有对此高科技给出的切实解决答案,但多家企业正在不断努力,远程高速数据通信也即将到来。 美国运营商Sprint在CES上推 ...… 查看全部问答> |
|
FPGA的多路可控脉冲延迟系统设计 采用数字方法和模拟方法设计了一种最大分辨率为0.15 ns级的多路脉冲延迟系统,可以实现对连续脉冲信号的高分辨率可控延迟;采用Flash FPGA克服了现有SRAM FPGA系统掉电后程序丢失的缺点,提高了系统反应速度。本系 ...… 查看全部问答> |
|
最近我在win7的操作系统中一直无法安装usb-blaster驱动程序,导致我无法在quartus II软件中下载程序,如图F:\\picture\\no hardware.jpg 但是我在安装usb-blaster驱动程序的时候,系统弹出对话框F:\\picture\\drivers.jpg,我怀疑是因 ...… 查看全部问答> |
|
想从上层开发(asp.net..c#) 转到 底层的嵌入开发(C)....请前辈指点....回答必得分 现在以有一年的上层开发经验....对asp.net..c# 什么的开发都 比较行了... 但现在有一个很好的机会 ...不过是做底层的嵌入开发(C).... 请高手给点好的意见...... 如果转入嵌入开发(C),有没有好的东东可以介绍... 先谢谢各位!… 查看全部问答> |
|
C#(v1.1)怎么能够让控件透明呢?C#(v2.0)能做到也行 如题,希望能让label,radiobutton,panel等等控件都透明。 就像winxp上的 transparent 属性的效果。不是说alpha值。 不用画笔的方式实现。 … 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 今天老师对我们说,建议09级的同学不要参加国赛,如果等到下一届,就得等两年,那时候就大四了,也就没有那个时间参加了! 可是老师给我们的答案是很多的竞赛在等你,为什么偏偏选择国赛呢 ...… 查看全部问答> |
|
实时多任务操作系统uCOS-III的特点1.uCOS-III是一个全新的实时内核,源于世界上最流行的实时内核uC/OS-II,除了提供熟悉的一系列系统服务,全面修订了API接口,使uC/OS-III更直观,更容易使用。该产品可以广泛应用于通信,工业控制,仪器仪表,汽车 ...… 查看全部问答> |




