历史上的今天
今天是:2024年11月15日(星期五)
2019年11月15日 | IO模拟串口之中断方式发送(后台运行?)
2019-11-15 来源:51hei
#include
//内部振荡器4M,看门狗关,上电复位延时,开外部复位脚,数据保护关,代码保护关,关掉电复位
__CONFIG(FOSC_INTRCIO & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF); //12F675
#define uchar unsigned char
#define uint unsigned int
#define TX GP0
#define RX GP1
#define KEY GP2
#define R_S GP4
#define LED GP5
uchar TX_REG,T_TMP;
bit TX_IF;
void delay_ms(uint wm) //进入退出一次8个指令周期
{
uchar i;
for(;wm!=0;wm--)
{
i=163;
while(i--);
NOP();
NOP();
}
}
/*
模拟串口,定时器中断发送方式,波特率9600
*/
void UART(uchar U_D)
{
while(T0IE); //等待上一次数据发送完毕
TMR0=175; //预充值
TX=0; //发送起始位
T0IF=0; //清零定时器中断
T0IE=1; //定时器0中断使能
TX_REG=U_D; //转移数据到发送缓存
T_TMP=8; //预置需要发送的位个数(8位数据)
TX_IF=1; //数据发送完毕标志
}
void init()
{
CMCON = 0b00000111; //关闭内部比较器
ANSEL = 0; //全部为数字IO
TRISIO = 0b00001110; //设置RA0为TX,RA1为RX,RA2为IRQ,RA3为复位,RA4为,RA5为
GPIO = 0b00000001; //
OPTION_REG=0b00001110;//GPIO上拉,TMR0时钟为内部
WPU = 0b00001110;
INTCON = 0b11000000;
}
void main(void)
{
init();
while(1)
{
if(KEY==0)
{
delay_ms(100);
if(KEY==0)
{
UART('O');
UART('K');
UART('r');
UART('n');
}
}
}
}
void interrupt INT()
{
if(T0IF) //检测到定时器0中断
{
TMR0=169; //预充值
if(T_TMP) //检测数据是否发送完毕
{
TX=TX_REG; //输出数据
TX_REG>>=1; //移位数据
--T_TMP; //
}
else //发送完毕后进行停止位发送
{
if(TX_IF)
{
TX=1;
TX_IF=0;
}
else
{
T0IE=0; //发送完毕后关闭定时器中断
}
}
T0IF=0;
}
}
以上程序为定时器中断方式IO模拟串口,
优点就是占用CPU少(只使用一次子函数后一直等待定时器中断才处理一次),
缺点是占用一个定时器
史海拾趣
|
关于输入电阻和输出电阻,纠结了好长时间,现在终于明白了,拿出来给大家看一下,呵呵 输入电阻是用来衡量放大器对信号源的影响的一个性能指标。输入电阻越大,表明放大器从信号源取的电流 ...… 查看全部问答> |
|
evc4.0能开发运行在wince5.0的程序么? 对于bin文件有什么要求么? 还是有其他别的注意事项啊? 原来运行在wince4.2上正常的程序,到wince5.0就不是有效的wince程序了是什么问题, 详细介绍最好啊!!!… 查看全部问答> |
|
我按照步骤把 ucos 移植到 ZLG 的 easyARM 开发板上,前面工作进行的挺顺利,但最近被这个问题给卡住了,半个月了,还没有搞定。 请求高手解疑释惑啊: 在一些初始化工作之后,创建了两个任务: void main(void) { OSInit(); & ...… 查看全部问答> |
|
为什么用vs2005还是EVC4SP4编译刚建好的例子时总提示要连接ActiveSync呢? 为什么用vs2005还是EVC4SP4编译刚建好的例子时总提示要连接ActiveSync呢? 环境是WINCE5 ,ActiveSync装的版本是4.2中文版. 是不是调试的时候一定要插上硬件呢?不插上可以调试WINCE5平台下开发的程序吗? EVC4下的错误提示是: An application ...… 查看全部问答> |
|
团购:OpenJTAGV3 USB转并口&串口 价格:138元! OpenJTAGV3 USB转并口&串口 EEWORLD团购:价格:138元! 买时备注上:EEWORLD团购,然后我改价格!;P 玩arm9 好帮手! 可以在win和linux调试arm7,M3,arm9 --例如:Fl2440 micro2440 OK2440开发板; 可以直接烧写24 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 13:16 编辑 作者:Jonathan Bearfield, Texas Instruments 当今的政府与医疗机构正努力完善其医疗体系,以更好地为病人服务。为了让病人有更多时间在家中养 ...… 查看全部问答> |
|
求解:TI的MBUS芯片TSS721的TX、RX收发数据问题!! 最近用TI得TSS721焊了一个MBUS从站电路,本来已经正常工作了一段时间,但是昨天突然不行了。具体情况:用串口调试软件,发现TSS721的TX在RX悬空的情况下,发送数据正常;当RX、TX一起连接了串口,串口调试软件就看不见TX发送的数据了。 [ 本帖最后 ...… 查看全部问答> |




