快捷搜索:

pic单片机多路ad切换程序与循环程序设计

pic单片机是最紧张的单片机种类之一,对付pic单片机,小编曾带来诸多先容,如pic单片机的上风、pic单片机选型等。而在本文中,小编将为大年夜家先容两种pic单片机法度榜样:一是pic单片机多路ad切换法度榜样,二是pic单片机轮回法度榜样。假如你对这两类法度榜样存在必然兴趣,不妨继承往下涉猎。

一、pic单片机简介

pic单片机(Peripheral Interface Controller)是一种用来开拓和节制外围设备的集成电路(IC)。一种具有分散感化(多义务)功能的CPU。与人类比拟,大年夜脑便是CPU,PIC 共享的部分相称于人的神经系统。PIC 单片机是一个小的谋略机。PIC单片机有谋略功能和影象内存像CPU并由软件节制运行。然而,处置惩罚能力—般,存储器容量也很有限,这取决于PIC的类型。然则它们的最高操作频率大年夜约都在20MHz阁下,存储器容量用做写法度榜样的大年夜约1K—4K字节。时钟频率与扫描法度榜样的光阴和履行法度榜样指令的光阴有关系。但不能仅以时钟频率来判断法度榜样处置惩罚能力,它还随处置惩罚装配的体系布局改变。假如是同样的体系布局,时钟频率较高的处置惩罚能力会较强。

二、AD转换先容

所谓模拟量很好理解便是模拟量是指变量在必然范围继续变更的量;也便是在必然范围(定义域)内可以取随意率性值(在值域内)。数字量是分立量,而不是继续变更量,只能取几个分立值,如 三位进制数字变量只能取7个整数值0.1.2.3.4.5.6.7。

而不是颠末AD通道的话,颠末的是通俗的IO口,那么模拟旌旗灯号只会在引脚上呈现两种数字结果,一个是1一个是0,而不能对照准确的描述出模拟量的数值,模拟量旌旗灯号是一种变量旌旗灯号,比假如0V--10V,或50MA到100MA,开关旌旗灯号是一种通断旌旗灯号,比如家里的灯开关,数字旌旗灯号是一种继续的开关旌旗灯号或上下电平旌旗灯号,比如1101----高上下高。连续串的旌旗灯号代表数字旌旗灯号。

再继承说一下AD精度的问题,8位AD精度的话便是将这个满电压值分成2^8=256份,比方说51单片机采集的电压范围是0-5v 那么0v对应的是 0 5v对应的是255.

三、pic单片机多路ad切换法度榜样

void ad_init (void)

{ ADIF=0X00;

ADCON1=0x80;//

ADCON0=0X81; //十位结果必须高为8位

TRISA=0X0FF;//默觉得AD输入

PORTA=0X00;

TRISE0=1;

TRISE1=1;

TRISE2=1;

ADON=1;

}

void delay(unsigned int x)

{

unsigned int a,b;

a=(2*x/8);

for(a;a》0;a--);

for(b=5;b》0;b--);

}

unsigned int read_ADresult(unsigned char channel)

{

channel &= 0x07; // 此处语法相称于channel=channel&0x07 联系自反加语法!

ADCON0 &= 0x85; // 清当前通道

ADCON0 |= (channel《《3); //10 xxx 001

delay(30);

ADGO=1;

while(ADGO) conTInue;

return (ADRESH《《8)+(ADRESL);

// return ADRESL;

}

unsigned int ad_res[8];//寄放AD转换值

for(j=0;j《8;j++)

{

ad_res[j]=read_ADresult(j);

}

四、pic单片机轮回法度榜样实例

下面小编将为大年夜家先容一种准时法度榜样,阐明轮回法度榜样在PIC单片机上的利用。小编这次以PIC16F84单片机为例建立其准时源法度榜样清单。该准时器源法度榜样只需改变一条指令的常数设置,即可使准韶光阴从分钟级到3?8小时的继续变更(4MHz晶振前提)。在该源法度榜样上再多设置一次轮回,可使准韶光阴长达1月以上。

该PIC16F84单片机准时源法度榜样可直接在MPLAB集成开拓情况软件下进行汇编,其汇编后天生的HEX文件可在实验编程器1?01上对源法度榜样进行固化并可在响应的实验板上直接察看实验的结果。PIC16F84单片机时的源法度榜样清单如下(文件各可自定义):

LIST

P=PIC16F84

#INCLUDE P16F84?INC

COUNT1 EQU

0x1F

COUNT2 EQU

0x1E

COUNT3 EQU

0x1D

COUNT4 EQU

0x1C

ORG  0

START CLRW

;与MOVLW 0等效

BSF

STATUS,5;选体1

MOVWF TRISB  ;设B口为输出

BCF

STATUS,5;STATUS复位当前体0

CLRF   PORTB ;准时启动功能

M1   BTFSS   PORTA,1 ;判断A口第D1位,D1=1间跳,D1=0顺

;序履行

GOTO   M2

GOTO   M1

M2   MOVLW 0xAA  ;选B口准时位,LED亮开始准时

MOVWF PORTB  ;B口按0x10101010输出

DELY CLRW

;与MOVLW 0等效

MOVLW 0xFF

MVOWF COUNT1

MVOWF COUNT2

MVOWF COUNT3

MOVLW 0

;与CLRW指令等效

MOVLW 0x02

;0x02送W(最大年夜准时为0xFF)

MOVWF COUNT4 ;准时价节制(细调)

LOOP DECFSZ COUNT1,1 ;CPUNT减1,为0间跳

GOTO LOOP

DECFSZ COUNT2,1 ;同上特征,这里d=1可不用

GOTO   LOOP

DECFSZ COUNT3,1 ;同上

GOTO LOOP

DECFSZ COUNT4,1 ;同上,但COUNT4中值可自由选定

GOTO LOOP

CLRW

;与MOVLW 0相同

MOVLW 0x02

;准时停止显示

MOVWF PORTB

M3 GOTO M3

END

;法度榜样停止

阐明:该源法度榜样中常数设置可由读者随意率性改变,改变之后即可达到随意率性光阴的设定。

责任编辑;zl

您可能还会对下面的文章感兴趣: