怎么pic单片机用for语句写1s延时程序晶震4MHz

例如:void delayms(int ms)
{ int i=0;
for(i=0;i<?;i++;)
{;}
}请问i该是多少?怎么算的啊?

这个程序无法算,因为是C程序,其中延时的时间没法计算!
要用仿真来确定,可能用SIM仿真或PROTEUS仿真,最好看一下北航的《PIC16系列单片机C程序设计与PROTEUS仿真》一书,里面有这个程序及参数确定的说明。下面是书中用4MHz晶振(不是晶震!)时延时若干ms的通用程序,如想延时10ms,就调用DELAY(10),想延时1s,就调用DELAY(1000)。
//======延时(n)ms
void DELAY(unsigned int n)
{
unsigned int j;
char k;
for (j=0;j<n;j++)
for (k=246;k>0;k--)
NOP();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-26
pic单片机制持汇编与C51混编,用汇编写的延时代码精度高。具体要看单片机型号,及片内资源。
第2个回答  2012-09-26
这个需要看他每条语句运行时间,然后你再估计要多少个循环

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”就会出来一个对话框 你选择完毕,就会在左边红色圈 显示你的配置字 很简单你试试看

相似回答