- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PIC16F1824代码
main.c
#include htc.h
__CONFIG(FOSC_HS WDTE_OFF LVP_OFF);
// int DATA[100][2]=0; //用于存储采集过来的结果
long long int xishu1[16]={0,0,0,0}; //用于存储上位机发来的16个系数
bit FLAG_receivefactor=0; //接收标志位,如果为一表示本次中断需要接收系数
int Factor_number=-1; //系数编号,表示本次中断接收的是第几个编号的系数
long long int real=0;
/******************************************
串口初始化函数
******************************************/
void USTRA_init()
{
BRG16=0; //使用8位波特率发生器
SPBRGL=12; //设置波特率发生寄存器的值4800
SPBRGH=0;
ANSA1=0; //A1引脚被配置为端口或数字特殊功能
ANSA0=0; //A0引脚被配置为端口或数字特殊功能
RXDTSEL=1; //备用引脚控制寄存器0的bit7 即RA1上具有RX/DT功能
TXCKSEL=1; //备用引脚控制寄存器0的bit2 即RA0上具有TX/CK功能
TRISA0=0; //配置AO端口为输出
TRISA1=1; //配置A1端口为输入
SYNC=0; //EUSART选择异步模式工作
BRGH=0; //选择低频传送
TX9=0; //不发送第9位数据
RX9=0; //不接收第9位数据
TXEN=1; //串口发送功能打开
CREN=1; //串口接收功能打开
SPEN=1; //串口功能打开
TXIE=0; //关闭发送中断
RCIE=1; //打开接收中断
}
/*********************************************
AD转换初始化函数
功能:将AD模块初始化,本函数并未将AD模块初始化为测量压力还是温度模式,选择模式在ADModel_shift()函数中完成
*********************************************/
void AD_init()
{
TRISC2=1; //配置RC2为输出模式
ANSC2=1; //配置RC2为模拟量模式
INLVLC2=0; //配置RC2为TTL输入方式
RC2=0; //配置RC2端口引脚电平小于VIL
ADCON1=0 //选择AD转换数据输出格式为右对齐,使用FOCS/8时钟作为AD转换时钟,选择负向参考电压为VSS,正向参考电压为VDD
ADIF=0; //清零AD转换中断
ADIE=0; //关闭AD转换中断
}
/************************************************
函数名称:ADModel_shift(int flag)
参数:标志量 int flag 0表示要将AD模块转换为测量压力模式,1表示转换为测量温度模式
功能:将AD模块在测量温度和压力之间进行切换
************************************************/
void ADModel_shift(int flag)
{
if(flag==0)
{
ADCON0=0 //打开通道6,并启用AD模块(本开发板用的是8号管脚,对应AD转换通道六)
}
else
{
ADCON0=0 //测温度并且使能AD模块
TSEN =1; //打开温度传感器功能
TSRNG=1; //温度传感器选择高电压模式
FVREN=1; //启用参考电压模块
}
// delay(1000); //模式转换完成后进行必要的延时等待,这样测量的结果才精准
}
/**********************************************
DA初始化
**********************************************/
void DA_i
文档评论(0)