pic c语言 位标志,PIC单片机C语言程序设计(14)

对于A/D 转换程序的初始化一般要经过图62 的几个步骤。

A/D 转换初始化函数代码如下:

void adcsh()

{

TRISA=0X07;// 设定I/O 口为输入

ADCON1=0X8a;

//RA0~RA5 设为模拟口,RA3 接参考电压。

ADCON0=0X81;

// 通道0,选择系统时钟focs/32.

ADRESH=0;

ADRESL=0; // 清空转换结果寄存器

GIE=1; // 打开总中断

PEIE=1; // 打开第一外围中断屏蔽

ADIE=1; // 打开A/D 中断

ADIF=0; // 清除A/D 中断标志位。

}

以上流程图和代码是采用中断服务程序来读取A/D 转换数值的,虽然通过查询标志位方式也可以达到同样的效果,但是在实际应用中,中断服务方式因方便、可靠、节省芯片运行时间而成为常用的编程结构。对于中断服务程序,越简单越好,因PIC 单片机特殊的堆栈结构,不宜在中断服务程序内作数据运算和太多调用函数的操作,原则是取出值后立即退出中断,以保证其它的任务能及时被响应。图63 是中断服务流程图。

ef403d28ac37348606b7c4c53cabb6c6.png

图63

AD 中断C 语言的基本写法:

void interrupt AD(void)

// 必须用interrupt 关键词,编译器才会判定是中断服务程序

{

unsigned int ad_1=0;

if(ADIF==1)

// 判断A/D 转换中断标志位是否为1 ;

{

ADIF=0;// 清零中断标志位

ad_1=(ADRESH0X03)*256+ ADRESL;

// 读取A/D 转换结果,并将低字 节和高字节进行整合。

}

从以上的代码看出,C 语言比汇编要简单得多,进入中断后,标志位清零是必须的,返回指令可以不写,这是最基本的中断服务程序。

以下提供在实际应用中的代码:

AD 初始化函数:

void adcsh()

{

OPTION=OPTION|0x80;// 关闭弱上拉

TRISC=0X00;

TRISB=0X03;

PORTC=0X00;

ADCON1=0X8a;

// 转换结果右对齐,RA0~RA5 设为模拟口,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值