PIC16F877单片机的异步串口中断程序:
#define uchar unsigned char
#define uint unsigned int
__CONFIG(0x3B31);
void init();
void main()
{
init();
// TXREG=0x31; //发送
while(!TRMT); //发送结束退出
while(1);
}
void init()
{
TRISD = 0;
PORTD = 0;
TRISC = 0x80; //RX方向必须为输出.或者:TRISC|= 0xC0;
TXSTA=0x24; //发送状态寄存器:使能发送,高速(高速与低速波特率差4倍,即9600与2400)
RCSTA=0x90; //接收状态寄存器:使能串行端口,使能接收
SPBRG=25; //波特率为9600
GIE=1; //使能全局中断
PEIE=1; //使能外设中断
RCIE=1; //使能串口中断
}
void interrupt com()
{
if(RCIE&&RCIF)
{
// TXREG=RCREG;
if(RCREG == 0x01) {PORTD = 0xff; TXREG = 0x11;}
if(RCREG == 0x02) {PORTD = 0x55;TXREG = 0xFF;}
while(!TRMT);//这一句不能少,否则收不到
}
}
关键字:PIC16F877 异步串口 中断探析
引用地址:
PIC16F877异步串口中断探析
推荐阅读最新更新时间:2024-03-16 13:49
PIC16F877单片机在智能站用电源系统中的应用
1 概述 供电系统是直接影响人们日常生活和工作的重要系统。特别是在变电站、发电厂、通信机房、大厦、医院等需要重要电源的地方和实行无人值守的电源系统,供电控制系统能否对供电电源进行故障监测,并能及时处理,保证系统正常供电,尤其显得重要。智能型变电站站用电源系统的设计采用ATS(Automatic Transfer Switch)自动转换开关和智能监测及控制技术,来实现电气和机械双闭锁,从而根本保证了电源的安全可靠切换。同时系统还可以方便地实现多电量的集中监测,并可根据用户需要接入远程监测控制系统中。本文主要介绍PIC16F877单片机在智能站用电源系统中的应用。 2 智能站用电源系统的构成和功能 2.1系统工作原理 2.1.
[单片机]
PIC16F877单片机在直流电机闭环调速系统中的应用
0引 言 现代工业生产中,电动机是主要的驱动设备,目前在电力拖动系统中已大量采用晶闸管(即可控硅)装置向电动机供电的KZ-D拖动系统,取代了笨重的发电动一电动机的F-D系统,又伴随着微电子技术的不断发展,中小功率直流电机采用单片机控制,调速系统具有频率高,响应快,本文论述了采用PIC16F877单片机作为主控制元件,充分利用了PIC16F877单片机捕捉、比较、模/数转换模块的特点作为触发电路,其优点是:结构简单,能与主电路同步,能平稳移相且有足够的移相范围,控制角可达10000步,能够实现电机的无级平滑控制,脉冲前沿陡且有足够的幅值,脉宽可设定,稳定性与抗干扰性能好等。 1 直流电机调速原理分析
[工业控制]
PIC16F877的应用--AD转换器
PIC16F877单片机片内有8路10位A/D转换器,引脚②~⑤为AN0~AN3、⑦~⑩为AN4~AN7。MPLAB-ICD的实验板上16F877单片机的RA0口接了一只供有电压的10kΩ电位器,在D口(RD0~RD7)接了8只LED,如附图所示。笔者用16F877 A/D转换通道其中一路作A/D转换,以说明A/D转换编写程序的方法和在线调试及编程。 在附图中,笔者把R6的可变输出(电压模拟量)端接到RA0/AN0作为模拟量输入;用D口(RD0~RD7)的8只LED显示A/D转换的结果(按二进制显示)。 一、 建立A/D转换源程序的要点 编写10位的一路A/D转换程序看似简单,但对初学者却有一定难度,因为编写A/D转换程序时,
[单片机]
PIC16F877控制数码显示按键按下次数C语言程序
//数码管动态扫描,k1按下,数字+1,K2按下,数字-1,每次按下的同时,听到DD二声。 #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); uint a; const uchar aa = {0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; void delay(uchar x)//延时函数 { uchar a; for(;x 0;x--) for(a=220;a 0;a--); } void
[单片机]
PIC16F877驱动DS1302芯片
这个程序改网上的程序只用了一上午的时间,看来是用修改别人程序比自个从头开始编快的的多呀! 下面是原理图 下面是程序头文件 #ifndef DS1302_H #define DS1302_H #include main.h #define Time_24_Hour 0x00 //24时制控制 #define Time_Start 0x00 //开始走时 #define Time_Stop 0x80 //停止走时 #define DS1302_SECOND 0x80 //DS1302各寄存器操作命令定义 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #def
[单片机]
单片机串口通信中的异步通信和同步通信
异步通信:收发双方使用独立的时钟进行数据传输。发送的每帧数据之间的时间间隔可以是任意的。发送端可以在任意时刻发送数据,而接收端要做好接收的准备,否则会造成数据丢失。异步通信发送的数据格式要求有(空闲位)起始位、数据位、奇偶校验位、停止位。这样接收端才能更好的解析数据,知道数据从哪位开始,在哪位结束。 同步通信:收发双方要保持时钟的同步,要求使用同一个时钟。在发送数据之前,传输线处于MARK状态,为了表示数据传输的开始,会先发送一两个同步字符,用于进行时钟的同步。同步之后即可逐位数据进行传输。 可以理解为:异步通信使用数据格式中的起始位,停止位进行同步,而同步通信使用外部时钟进行同步。
[单片机]