#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少(只使用一次子函数后一直等待定时器中断才处理一次),
缺点是占用一个定时器
上一篇:PIC的35条指令扭曲理解法
下一篇:用PIC16F1824的内部DAC做正弦波发生器测试
推荐阅读最新更新时间:2024-11-08 18:42
设计资源 培训 开发板 精华推荐
- LTC3521 的典型应用 - 1A 降压-升压型 DC/DC 和双路 600mA 降压型 DC/DC 转换器
- LTC1598 的典型应用 - 8 通道、微功率采样 12 位串行 I/O A/D 转换器
- SLRC610高性能ICODE前端典型应用
- MCP1653DM-LED1、MCP1653 3W 白光 LED 演示板
- 用于带有IO-Link v1.1 PHY和堆栈的IO-Link主站的STM32 Nucleo包
- EVAL-CN0229-SDPZ,用于 I/O 卡和 PLC 应用评估板的 4 通道、灵活、可配置、电压和电流输出电路,基于 AD5685R
- 基于MOS的DC-DC降压模块
- LT3091MPR 低噪声 4 象限电源的典型应用
- DC1017A,LT5558EUF 演示板,600 - 1100 MHz I-Q 调制器,具有 Hi-Z BB Rin,Vcm = 2.1V
- EVAL-AD7851CB,用于伺服电机的 AD7851、14 位、333KSPS ADC 的评估板
- 2016 TI 电机驱动研讨会资料大放送,不容错过!
- 2022 Digi-Key KOL 视频系列:你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍
- Hercules :安全MCU 初体验
- 有奖直播:恩智浦基于RT06F的人脸识别技术解决方案
- EEWORLD芯积分上线,加分规则公示~关系到每一个EE网友
- 【EEWORLD第三十五届】2012年02月社区明星人物揭晓!
- 万用表,红外测温仪等你来拆!—— EEWorld拆你来玩拆解(第二期)
- 【投票跟帖有礼】原厂的翻新仪器怼市场上的二手仪器,你顶谁?
- Keysight 有奖直播 | 基于数字孪生的软件工具,助力射频子系统验证
- 逛村田在线云展厅,看干货,闯关赢好礼!