单片机C语言中多个延时程序同时使用怎样编写?

作者&投稿:只审 (若有异议请与网页底部的电邮联系)
单片机c语言中多个延时程序怎么编写~

#include
unsigned char sx[]={
oxfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,
oxfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x01},
ml[]={0xff,0x00, 0xff,0x00, 0xff,0x00,
0xff,0x00, 0xff,0x00, 0x01};
unsigned int a=0,b=0;
del1ms(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
for(j=0;j<100;j++);
}
main()
{
while(1)
{
if(sx[]!=0x01)
{
P0=sx[a];
del1ms(20);
a++;
}
else
a=0;
if(lm[]!=0x01)
{
P0=lm[b];
del1ms(30);
b++;
}
else
b=0;
}
}
说明一下: 这样延时太短了,基本上看不出
对于定义来说:变量只是一个标识符而已,随便设,当变量多 的时候最好用带意思如:sec stu 等

下面的延时的基本程序(中断加计数器)
********
void T0_int(void) interrupt 1
{
TH0 = 0x4C; //重新装载,50MS定时器初值
TL0 = 0x00;
T0_count++;

if(T0_count==20) //1S到
{
T0_count = 0;
//在这写程序
}
}


main()
{
TMOD = 0x01;//定时器0,工作方式1,16位计数

TH0 = 0x4C; //50MS定时器初值
TL0 = 0x00;

IE = 0x82; //开总中断,开T0中断

EA = 1;
ET0 = 1;

TR0 = 1;
T0_count = 0;
i = 0;
loop:

goto loop;

}


还有:
for(us=0;us<60;us++); /*延时500us*/
for(us=0;us<1;us++); /* 延时15微秒*/
for(us=0;us<5;us++); /* 延时51微秒*/

延时子函数 直接调用就行了 这里以一毫秒计算 10秒的话你自己算一下 精确计时就用定时器比较好
void delay(unsigned z)
{
unsigned uint x,y;
for(x=0;x<z;x++)
for(y=0;y<110;y++);
}

int x;

bit led1,led2;
void intter_0() intterupt 0
{
led1 = 1;

}

void timer0() intterupt 1
{++x}

void intter_2() intterupt 2
{
led2 = 1;
}

void main()
{

x = 0;
TH0 = xxxx;
TL0 = xxxx;
TR0 = 1;

while(1)
{
if(led1 == 1)
{
if(x%十秒 ==0)
{
p10 = 1;
led1 = 0;
}
}
if(led2 == 1)
{

if(x%十秒 ==0)
{
p11 = 1;
led2 =0;
}
}
}
}

类似这样 主要用定时器取时间 用两个位来判断是否按下 单片中断什么的没初始化 自己设置

用定时器,不占用cpu资源


C语言片指的是什么?
1971年在PDP-11\/20上实现了B语言,并写了UNIX操作系统.但B语言过于简单,功能有限.1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母).C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等)...

单片相机C语言程序中A?
是取余操作,即求余数。16除以5,商3余1,所以,a的值为1。

c语言程序 帮我把没一句注释写上,越清楚奖分越多。最好按格式写(第一句...
include<re51.h> \/* 把文件're51.h'的内容包含在程序中*\/ define uchar unsigned char \/*定义数据类型uchar 为无符号的char *\/ define unit unsigned int \/*定义数据类型uint为无符号整形*\/ void delay1ms(uint t) \/*声明并且实现函数,函数命为d elay1ms1ms 参数为 uint ,返回值为void*\/...

C语言和C++有什么区别么??
一、性质不同 1、Visual C++:Microsoft Visual C++(简称Visual C++、MSVC、VC++6.0或VC6.0)是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。2、C++:C++是C语言的继承,进行C语言的过程化程序设计。二、作用不同 1、Visual C++:适合用来编写各种复杂软件...

...需从主机发送8个字节的数据给从机。求C语言源程序
1.定义三个gpio: p0-sclk, p1-sdi, p2-sdo;p0用于模拟spi的clock,p1用于接收数据,p2用于f发送数据;硬件上单片机A的p0接单片机B的p0,A的p1接B的p2,A的p2接B的p1 2.发送程序:clock拉低,sdo输出0或1(数据),延时一定时间,clock拉高,延时一定时间,这样A就发送一位数据到B,循环8次...

在pic中如何用C语言编写程序?
PIC单片机的开发软件MPLAB没有集成C语言编译器。需要另外安装。如果你用的是PIC10、PIC12、PIC16等这些系列的单片机,就要去Microchip的网站下HT-PICC for PIC12\/16的C编译器。如果是PIC18的话,就要下MCC18,如果是PIC24和dsPIC系列的,就要用C30编译器。还有,所用的PIC单片机不同系列,C程序编写方式也不同。你...

C语言与C++语言有什么区别
C和C++的关系:就像是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。C和C++的区别:C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C++,...

关于c语言中的类型转换,谢谢了啊!!!
关于c语言中的类型转换,谢谢了啊!!! 本人初学c语言,想问下floata;a=3.74;这两个语句的组合是正确的吗?为什么我们老师把第二个语句要我改成a=(float)3.74;还有一个问题,显示转换和隐示转换有什么区别,他们和强制转换... 本人初学c语言,想问下 float a; a=3.74;这两个语句的组合是正确的吗?为什么我们...

c语言实验报告心得
c语言实验心得:1、只有频繁用到或对运算速度要求很高的变量才放到data区内,如for循环中的计数值。2、...从数据存储类型来说,8051系列有片内、片外程序存储器,片内、片外数据存储器,片内程序存储器还分...我建议你把多个要传递的参数定义到指针或结构体中去,传递参数通过指针或结构进行,这样好一些。第3个...

单机片c语言是什么!!和我们的c语言有什么区别!
基本语言一样,主要的是使用那种单片机提供的头文件,以及掌握提供的文档,定义的一些宏变量

路桥区19524078693: 如何用C语言实现51单片机多个延时时间
晨沈贝诺:MCU 可以 写一个,T0 ,T1两个, 例如:MCU的等待延时 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); 下面这两个是独立运行的,不浪费MCU的时间 /***初始小灯0.25秒循环闪烁***/ void timer0() interrupt 1 { TH0=(65536-500)/...

路桥区19524078693: 单片机c语言中多个延时程序怎么编写
晨沈贝诺: 可以用多个delay延时子程序,延时多久你自己编.i,j随便用,定义为局部变量就不影响.提供电路、软件设计服务.延时子程序可采用定时器法和循环法,看你的需要!

路桥区19524078693: 单片机c语言中多个延时程序怎么编写 -
晨沈贝诺: #include<AT89X51> unsigned char sx[]={ oxfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe, oxfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0x01}, ml[]={0xff,0x00, 0xff,0x00, 0xff,0x00, 0xff,0x00...

路桥区19524078693: 单片机的多个延时用定时器如何处理? -
晨沈贝诺: 用定时器,定时1ms,每当到了、中断,就把 n1、n2、n3,分别加一,然后退出中断.在主函数中,分别检测n1、n2、n3是否到了50、30、60,到了,就该干什么就干什么去.用一个定时器,基本就可以满足所有的定时需求.

路桥区19524078693: 一个单片机里程序里面能有多个延时程序吗(汇编) -
晨沈贝诺: 有多少个延时程序取决于你程序的具体应用,比如红外解码,就要用到9毫秒左右的延时,4.5毫秒左右的延时,565微秒左右的延时,1120微秒左右的延时等等,所以具体用多个个延时程序,视情况而定.

路桥区19524078693: 单片机c语言程序里能不能放两个延时子程序,急 -
晨沈贝诺: 当然可以,但你这么写不太规范,通常都是分成毫秒延时和微秒延时,你这两个函数名看着好像都是毫秒,就没什么意义了!

路桥区19524078693: at89c51单片机怎么用汇编语言写“多个延时程序” -
晨沈贝诺: 单片机汇编语言中要使一个延时程序可以被不同情况下调用而延时不同的时间,可以通过类似于C语言中传递参数的方式来实现,举例如下:ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV P0,#5AH ;P0上的LED灯间隔点亮 MOV R7,#50 ;R7...

路桥区19524078693: AVR单片机多个延时怎么操作 -
晨沈贝诺: 你能确定最大的延时是多少,最小的延时?可以的话,设定时器的延时时间为在不影响精度的情况下用最大的延时时间(肯定小于你要求的最小延时),这样可以减少单片机负担;然后给没个事件一个变量(看你的时间长度可选用UCHAR 或UINT……)用于计数,即是计时,这样你应该明白了;实际上类似与捕获,但更灵活;要确定延时里面执行函数的时间小于设定的延时时间;

路桥区19524078693: 51单片机定时器0能不能同时给两个程序延时 -
晨沈贝诺: 当然可以啦.但要求两个程序延时的时间是倍数关系.比如,第一个程序延时2ms,第二个程序延时10ms,那就做延时2ms的设置,再用一个变量计5次2ms的定时,就是第二个程序的延时了.

路桥区19524078693: 51单片机如何在一个工程中同时加入延时和多组次数循环 -
晨沈贝诺: 假设循环10次和20次c=10;while(c--){你要循环的程序1}c=20;while(c--){你要循环的程序2}当然也可用for循环

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网