例如:void delayms(int ms)
{ int i=0;
for(i=0;i<?;i++;)
{;}
}请问i该是多少?怎么算的啊?
PIC单片机的延时问题 晶振4Mhz。大哥们,别跑题啊,只要回答就可以了...
问题1:“我刚算了一下他应该执行了999条指令”因为你算错了。延时时间是由产生的汇编代码所决定的,C语言语句只是个假象,千万不要以为C语言一行就是一条指令!此处由于涉及到双字节减法,因此会有额外的判断,编译结果每次循环耗费几十个周期毫不奇怪。问题2:前一句x从100开始递减,递减至1时退出循...
PIC单片机 4M晶振 产生1秒延迟的原理
可以用任何定时器,如TMR0,设置它基本延时时间为50ms,延时20次就是1s了!因为你用的是4M晶振,指令周期为1us,TMR0的延时50ms延时常数计算如下:先计算TMR0的分频系数K:50000=256*1*K,K=195.3,取K=256(只能取略大的计算值,不能四舍五入!),这是的1是指令周期,下周 再计算TMR0的延...
pic单片机 实现10ms定时的简单程序
1、直接用软件延时,如用以下的DELAY()延时子程序,如要延时5ms,直接调用DELAY(5)就好了,但这种是纯软件的延时。\/\/===延时(n)ms,在4MHz晶振下!!!void DELAY(uint n){uint j;uchar k;for (j=0;j<n;j++)for (k=246;k>0;k--) NOP();} 2、用定时器延时,要通过计算延时的时...
一般PIC单片机都是配几兆晶振在里面
内部RC一般是4M。如果是外部对时钟精度要求非常高就用声表振荡,32.768K或其倍数。要串行通信就用11.0592M或倍数。其它情况一般就是用4M或其倍数,好计算。pic目前配得最多的是4M和32.768K
单片机中,PIC汇编GOTO语句的问题。
1.goto后面只能是个标签,其实你使用的伪指令loop也是个标签,不能是个地址,如果要使用$ + 3; 用JMP 2.你的意思是想在循环上加变量自减1,再延时时间自减1,是吗?这样你可以这样做(当然,我比较习惯C,所以我用C写):include<reg51.h> \/\/使用晶振11.0592 unsigned int k; \/\/k为延...
各位师兄,小弟请教一个单片机的问题:PIC16F877的震荡电路需要外部提供晶 ...
一般4M外部晶振选择XT,内部则选择INTOSC或INTOSCIO,选择内部振荡的话还需要配置相关的寄存器。你如果安装了MPLAB IDE,在安装目录下的\\Microchip\\MPASM Suite\\Template\\Code文件夹里有程序模板,里面就有配置字等汇编程序的标准格式,当然具体的配置字要你自己修改了。
求编程单片机89c51,要求:按key1(P3.4,p3.5)键三次后,P1口的LED灯全部点...
\/ 晶振4MHZ,按键key1为P3.4,P3.5接口 功能:按 key1键三次,P1灯亮,再按一次灭,如此重复 \/ include<reg51.h> sbit key1 = P3^4;\/ void delay40us(uint time)输入参数:time 输出参数:无 函数功能:延时程序40us \/ void delay40us(unsigned int time){ unsigned char ks;while(...
PIC单片机如需要使用外部晶振,则用C语言在程序中该如何配置?
这个你可以参考北航的《PIC16系列单片机C程序设计与PROTEUS仿真》一书。这里简单说一下:__COHFIG(0x3F39);或:__CONFIG (XT & WDTDIS & PWRTEN & BOREN & WDTDIS);这二种都可以。具体见参考文献。
pic16f877a单片机12m晶振产生58K方波,哪位高手帮忙用编程给写个程序啊...
void interval(){ set_timer0(0xFE); \/\/改变初值来改变输出方波频率 flag=!flag;output_bit(PIN_B1,flag);} 用定时器0实现,实际输出的频率可以根据计算得出,可能存在误差,如果增大晶振频率,输出频率更容易实现。希望以上程序对你有所帮助。但编程好多东西还是要自己动手印象更深 一些。
PIC单片机系统配置
其实可以不用这么麻烦的 可以直接进入MPLAB编译环境 点击“configure”就会出来一个对话框 你选择完毕,就会在左边红色圈 显示你的配置字 很简单你试试看