网站建设资讯

NEWS

网站建设资讯

pic函数C语言,pic c语言

PIC C语言中断程序,可不可以分几个部分来写

可以分几个部分

创新互联-成都网站建设公司,专注成都做网站、网站制作、网站营销推广,域名申请,网页空间,网站运营有关企业网站制作方案、改版、费用等问题,请联系创新互联

不过入口只能有一个。

也就是说,中断的时候,只能执行一个入口函数。

但这个函数里面,可以调用其它函数 这样就可以分部分了。

51与pic用c语言写在定义上之间有什么区别

首先,PIC和51单片机再寄存器上就有很大的不同,比如说51单片机的IO没有方向性,读IO就是输入数据,写IO就是输出数据。而PIC单片机的IO输入数据和输出数据需要用一个方向寄存器来确定,比如A口要全部做输出高电平,则需要先设置A口的方向寄存器TRISA=0x00,然后给A口的数据寄存器赋值PORTA=0xFF。

而51单片机因为没有方向性,如需要给P1口输出则直接给P1=0xFF.

这是因为硬件上的不同所以软件上的较大区别。

另外PIC几乎所有寄存器和存储器都可以位寻址,比如8位高档PIC和16位PIC可以直接给位赋值:C1CTRLbits.REQOP=7,就是给C1CTRL这个寄存器的最高三个位赋值二进制数111,其他位不动。

在语法上,PICC(PIC的C语言编译器,不是中国人保)不允许重入函数。51单片机有中断向量表,所以中断函数可以有多个。因为8位中档PIC没有中断向量表,所以需要在中断函数里判断中断类型(有且仅有一个中断函数)。16位PIC单片机有中断向量表,但在设置中断类型上较为麻烦。

PIC单片机多中断函数用C语言怎么写?51的可以intterrupt+中断号,PIC该怎么写呢?

#pragma vector= 0x04

//Interrupt Service Routine

__interrupt void series_int(void)

{

if (中断触发事件)

{

RCIE=0;

// 在这里写中断后的function

RCIE=1;

}

return;

}

一定要放在其他程序的前面,其他程序该怎么写还怎么写

PIC的C语言编程,主函数里的while语句只执行一遍,是为什么?

你怎么判断它只执行了一次呢???

补充:首先不清楚你的芯片具体是什么型号的,从程序上看应该是PIC16或者pic18系列的。也不清楚晶振频率是多少。

我提出我的怀疑及其推论:首先我怀疑while不是没有循环,而是一直循环了,但是Vsrb_average[0]并没有被赋值超过50以上的数值。(你可以加一条语句,在wihile大括号里,但不在任何if语句内的:loop++;让一个自定义变量自加,运行一两秒后看loop的数数值肯定很大)

因此怀疑AD采集过程并不准确。而为什么AD采集不准确呢,一般设置好并开启AD后采样和保持需要时间的(PIC单片机的数据手册里也提到)但你的程序设置是T0定时溢出后在中断里执行AD采集。这时候问题来了,你的TO的option_org寄存器等于0B11001111,也就是说设置T0定时器使用内部指令周期时钟(就是用单片机晶振所输入的频率定时)但PSA=0,预分频器不用于T0,所以当你的晶振是4M的时候,定时器0从计数到溢出只需要256uS。也就是说程序从WHILE开始到采集AD信号这段时间才比256us大不了多少,这根本不符合PIC单片机规定的采集时间。所以采集到的数据很小,根本不足进入while循环内部的哪两个if语句(一个IF语句是判断[50,600]这个区间,另一个是判断大于680这个范围)。

但当你屏蔽掉T0的初始化程序后,注意,这时候0PTION_REG寄存器等于0B11111111,如果TRCKI这个引脚是有脉冲充输入的话,T0定时器是会自动计数的,当溢出之后是会自动置位T0IF的(虽然没有设置T0IE,但T0IF满足条件后是会置位的),而你的总中断开关在主函数里INTCON|=0XC0;所以当T1定时器溢出之后,程序会在中断子函数里进行对T0的操作。

还有你的程序有些逻辑错误,AD结果应该是10位的,但你接收AD结果的数组a[2]却是8位的,那就丢失了两个位了。

如果还有问题,给我留言。

pic单片机的中断处理函数是怎么回事,c语言代码怎么写

首先,在初始化中设置好I/O口功能。开中断,初始化串口。

然后写个串口中断函数,例如:

void interrupt isr(void)

if(RCIERCIF) //串口接收中断

{

while(!RCIF);

NOP();NOP();NOP();

recive_dat[1]=RCREG; //接收1位数据

NOP();NOP();NOP();

CREN=0;

NOP();NOP();NOP();

CREN=1;

}

当然,你把括号中加上你的函数就好了。

本人建议不要在中断中处理函数,最好在中断中返回个标志位,然后在主函数中执行函数。

如果一定要在中断中执行函数,这个函数最好在其他地方不使用,否则容易出错哦。

你说的RXIF我不知道,我只知道RCIF。

C++里pic是什么函数

这个应该是自己定义的函数 这里只能看出来这个函数无返回值 要有两个int型的参数 其他的没办法看出来,具体要看函数是如何定义的


网站标题:pic函数C语言,pic c语言
URL地址:http://cdweb.net/article/hsspsi.html