英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流
标题:
双机异步通讯,调试通过
[打印本页]
作者:
winnie
时间:
2009-3-24 17:03
标题:
双机异步通讯,调试通过
file://******************************************************************
file://tran.c
file://单片机双机异步通讯,发送接收程序
file://PIC16F27单片机
file://发送一个数,发送完毕后,等待从机接收
file://从机接收后,进行数据校验,如果正确。点亮显示灯
file://*******************************************************************
#include <16F627.h>
unsigned char tran; file://定义一个变量或数组存储发送数据
unsigned char t,s; file://定义一个变量
file://unsigned char k,data file://定义通用寄存器
unsigned char flag;
file://程序初始定义,定义各寄存器地址或位
#byte SPBRG = 0x99
#byte TXSTA = 0x98
#byte RCSTA = 0x18
#byte TRISB = 0x86
#byte RCREG = 0x1A
#byte TXREG = 0x19
#bit TRISB1 = 0x86.1
#bit TRISB2 = 0x86.2
#bit TRISB3 = 0x86.3
#bit TRISB4 = 0x86.4
#bit TXEN = 0x98.5
#bit CREN = 0x18.4
#bit TXIF = 0x0C.4
#bit RCIF = 0x0C.5
#bit GIE = 0x0B.7
#bit KEY = 0x06.4
#bit SHOW = 0x06.3
#bit TXIE = 0x8C.4
#bit RCIE = 0x8C.5
file://给变量或数组赋初值子程序
void fuzhi()
{
tran=7;
}
file://USART工作初始化子程序
void USART_init()
{
SPBRG=0x25; file://波特率设置为9600bps
TXSTA=0x40; file://选用异步高速方式传输8bit数据
RCSTA=0x80; file://允许同步串行口工作
TRISB1=1;
TRISB2=1; file://设置RB1,RB2为输入方式,对外部呈高阻状态
TRISB3=0; file://设置RB3为输出方式
TRISB4=1; file://设置RB4为输入方式,对外部呈高阻状态
}
file://主程序
void main()
{
unsigned long int t;
fuzhi();
KEY=1; file://给按键初始值,高电位
USART_init(); file://USART工作初始化
// GIE=0; file://中断禁止
while(1)
{
RCIE=1; file://串口接收中断允许
TXIE=1; file://串口发送中断允许
TXEN=1; file://发送允许
CREN=1; file://接收数据允许
flag=0;
// if(RCIF==1) file://接收寄存器已满
// {
// s=RCREG; file://读该寄存器
// flag=1;
// if(s==0x33)SHOW=0; file://判断数据是否正确,正确点亮灯
// }
// if(KEY==0) file://按键开始即送数
TXREG=0x33;
if(TXIF==1) file://判断是否送完
for(t=0;t<1000;t++);
SHOW=0;
}
}
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2