这是一个经典一秒定时我看不懂,希望那位大哥给指点一下,越详细越好。小弟在这拜谢了。诚意求解!!
void timer0(void) interrupt 1 using 1
{
TH0=-5000/256;
TL0=-5000/256;
BUFFER[0]=BUFFER[0]+1;
if(BUFFER[0]==100)
{
CIRCLE=CIRCLE<<1;
if(CIRCLE==0)
{
CIRCLE=0X10;
}
BUFFER[0]=0;
BUFFER[1]=BUFFER[1]+1;
if(BUFFER[1]==60)
{
BUFFER[1]=0;
}
}
}
破书害死人啊,要是知道是这个,我晕。谢谢大哥指点了,要不不知道什么时候才能清楚呢,那个%是我打错了。后面BUFFER[0]==100;是书上原话,再问大哥一个问题后面为什么要if(BUFFER[1]==60)呢?为什么是60就要清零?大哥能把邮箱给小弟么?我想以后如果有什么不懂的就直接问大哥了,我的邮箱epdqffma357@163.com。再一次谢谢了
单片机c语言编写产生1秒定时的程序,怎么写?
如果是51单片机的话其实很简单的,这里假设晶振频率是12M(一般都是的),你可以选用定时器0,工作在工作状态2,因为这个状态下装入初始值几乎不需要时间,所以定时精确,也就是8位预置数状态,将初始值设为6,这样每次定时就是250微秒,在中断程序中定义一个静态变量,每次中断加一,这样当这个变量值为4...
单片机延时1秒如何计算要最详细一点的要过程用C语言
IsOneSecondReach = 0;\/\/do something,如果一秒延时标志为1,则清除此标志,等待下次1秒,在此处 \/\/执行需要执行的程序 } } } \/* 定时器50ms产生一次中断 *\/ void Timer(void) interrupt 3 { \/* 重新载入T1参数 *\/ TH1=0x3C;TL1=0xAF;\/* 一秒累加 *\/ rSecondCount++;\/\/秒计时+1 if (r...
单片机C语言一秒定时程序详解
如果是12M晶振的话,那么定时器一个计数频率是12M \/ 12 = 1M,即一个计数周期是1us。你给的程序看出,是定时器工作在MODE1。16位计数器。但是你给的程序应该有问题。一个是TL0 = - 5000 \/ 256,应该是TL0 = - 5000 % 256;另一个是if(BUFFER[0]==100),应该是if(BUFFER[0]==200)。...
哪位高手知道 单片机精确延时1秒得C语言子程序 谢谢了
SETB TR0 ;开启定时器 HERE:JBC TF0,NEXT1 SJMP HERE NEXT1:MOV TL0,#0B0H MOV TH0,#3CH DJNZ R7,HERE CLR TR0 ;定时器要软件清零 SETB EX0 RET C语言延时程序:10ms延时子程序(12MHZ)void delay10ms(void){ unsigned char i,j,k;for(i=5;i>0;i...
单片机的程序怎么延时1s?
单片机常用的编程语言有汇编语言、C语言等。以下是使用汇编语言实现延时1s的程序:以上程序中,使用了一个8位计数器来实现延时功能。由于单片机晶振频率为12MHz,每个指令需要执行12\/4=3个机器周期(其中4代表指令周期),因此可以通过调整计数器初值来实现不同的延时时间。具体计算过程如下:每个指令需要执行...
利用单片机c语言编程设计闪烁时间为1秒流水灯程序
include <reg52.h> include <intrins.h> define uchar unsigned char define uint unsigned int void DelayMS(uint x){ uchar i;while(x--){ for(i=120;i>0;i--);} } void main(){ P0 = 0xFE;while(1){ P0 = _crol_(P0,1);DelayMS(500);} } ...
51单片机 用c语言 调用-nop- 编一个 延时一秒 程序
如果你换个编译器,比如从keil转到wave,又不能确定时间是否一致;其实你到网上看看,对于时间要求很严格的地方,延时程序基本都是汇编写的,大不了是C和汇编嵌套,或者用定时器;如果你说的是大概一秒的话,那么你百度一下就是一大堆;我做个一个表,即使用定时器,藐视很准确,其实走上一天可能就差...
AT89C51单片机,如何实现延迟一秒
其实可以用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12\/n(n指晶振频率),假设你要定时的时间为M 那么定时的初值为:M\/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)\/256;将(65536-初值)...
用c语言编程实现C8051F300单片机1s定时,50Hz的方波输出
\/\/定时器0中断打开} data unsigned char us250;data unsigned int ms;bit WAVE; \/\/用以记住当前wave的状态void Timer0_ISR() interrupt 1 \/\/定时中断服务程序,为按键消抖服务{if (++us250<4) return; us250=0; ++ms;if (ms<10) return;\/\/每10ms波形变化一次,20ms完成一个波形,所以...
单片机60秒计时器的程序,用AT89C51实现
\/\/1:用AT89C51单片机的定时\/计数器T0产生一秒的 \/\/定时时间,作为秒计数时间,当一秒产生时,秒 \/\/计数加1,秒计数到60时,自动从0开始。单片机 \/\/晶振频率为12MHZ include<reg51.h> define uchar unsigned char define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x...