- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章模拟量输入与输出.
第6章 模拟量输入与输出
6.1 A/D转换的应用
例6.1 A/D转换初始化程序
//A/D转换初始化子程序
void adinitial( )
{
ADCON0 = 0x51;//选择A/D通道为RA2,A/D转换器
//在工作状态,AD转换时钟为8tosc
ADCON1 = 0X80;//转换结果右移,ADRESH寄存器的高6位为"0"
//且把RA2口设置为模拟量输入方式
PIE1 = 0X00;
PIE2 = 0X00;
ADIE = 1;//A/D转换中断允许
PEIE = 1;//外围中断允许
TRISA2=1;//设置RA2为输入方式
}
6.1.2 程序清单
下面给出一个调试通过的例程,可作为读者编制程序的参考。该程序中用共用体的方式把A/D转换的10位结果组合在一起。有关共用体的详细资料请参考本书相关章节。
# include <pic.h>
union adres
{int y1;
unsigned charadre[2];
}adresult;//定义一个共用体,用于存放A/D转换的结果
unsigned char i;
unsigned int j;
//I/O口初始化子程序
void initial()
{
TRISD=0X00;//D口为输出
i=0x00;
}
//A/D
void adinitial()
{
ADCON0=0x51;//选择A/D通道为RA2,A/D转换器
//在工作状态,A/D转换时钟为8tosc
ADCON1=0X80;//转换结果右移,ADRESH寄存器的高6位为"0"
//且把RA2口设置为模拟量输入方式
PIE1=0X00;
PIE2=0X00;
ADIE=1;//A/D转换中断允许
PEIE=1;//外围中断允许
TRISA2=1;//设置RA2为输入方式
}
//延时子程序
void delay()
{
for(j=5535;--j;) continue;
}
//
void alarm()
{
i=i^0xFF;//通过异或方式每次把i的各位值取反
PORTD=i;//D口输出i的值
}
//中断服务程序
void interrupt adint(void)
{
ADIF=0;//清除中断标志
adresult.adre[0]=ADRESL;
adresult.adre[1]=ADRESH;//读取并存储A/D转换结果,A/D转换的结果通过共
//用体的形式放入了变量y1中
if(adresult.y1>0x200)
{
alarm();//如果输入的模拟量大于2.5V(对应数字量
//0X200h),
delay();//调用延时子程序,使电压检测不要过于频繁
}
else PORTD=0XF0 ;//如果输入的模拟量小于2.5V,D口相连的
//8个发光二极管的低4个发亮,
ADGO=1;//启动下一次A/D转换
}
//主程序
main()
{
adinitial();//A/D转换初始化
initial();//系统各I/O口初始化
ei();//总中断允许
ADGO=1;//启动A/D转换
while(1)
{
;
}//等待中断,
}
6.2.2 I2C总线工作方式相关子程序
1.C语言编写的I2C总线工作方式的初始化子程序
//I2C初始化子程序
void i2cint()
{
SSPCON = 0X08;//初始化SSPCON寄存器
TRISC3 =1;//设置SCL为输入口
TRISC4 =1;//设置SDA为输入口
TRISA4 = 0;
SSPSTAT=0X80;//初始化SSPSTAT寄存器
SSPADD=0X02;//设定I2C时钟频率
SSPCON2=0X00;//初始化SSPCON2寄存器
di();//关闭总中断
SSPIF=0;//清SSP中断标志
RA4=0;//关掉74HC165的移位时钟使能,以免74HC165移位
//数据输出与I2C总线的数据线发生冲突(此操作与该
//实验板的特殊结构有关,不是通用的)
SSPEN=1;//SSP模块使能
}
2.C语言编写的I2C总线工作方式传输数据子程序
需要发送的数据在寄存器j中。
//I2C总线输出数据子程序
i2cout()
{
SEN=1;//产生I2C启动信号
for(n=0x02;--n;) continue;//
do {
RSEN
您可能关注的文档
- 第5章系统调用..doc
- 第5章紫外可见吸收光谱法..doc
- 第5章紫外灾难..doc
- 第5章练习题及参考答案..doc
- 第5章维生素..doc
- 第5章综合能力测试B..doc
- 第5章缓冲溶液_终稿..doc
- 第5章网页制作教参..doc
- 第5章网页图像编辑..doc
- 第5章西方政治制度的议会制度(答案)..doc
- GB/T 40096.6-2024就地化继电保护装置技术规范 第6部分:母线保护.pdf
- 《GB/T 40096.6-2024就地化继电保护装置技术规范 第6部分:母线保护》.pdf
- GB/T 43980-2024口译服务 医疗口译要求.pdf
- 中国国家标准 GB/T 43980-2024口译服务 医疗口译要求.pdf
- 《GB/T 43980-2024口译服务 医疗口译要求》.pdf
- GB/T 17215.301-2024电测量设备(交流) 特殊要求 第1部分:多功能电能表.pdf
- 《GB/T 17215.301-2024电测量设备(交流) 特殊要求 第1部分:多功能电能表》.pdf
- 中国国家标准 GB/T 17215.301-2024电测量设备(交流) 特殊要求 第1部分:多功能电能表.pdf
- 中国国家标准 GB/Z 43973-2024非介入式负荷监测(NILM)系统用感知装置.pdf
- GB/Z 43973-2024非介入式负荷监测(NILM)系统用感知装置.pdf
文档评论(0)