⑴ 51鍗旷墖链洪噷闱㈢殑鍑犱釜鍑芥暟 璋佽兘甯鎴戣В鍐充竴涓 姣忎竴琛岃兘甯鎴戣︾粏璁茶В涓涓嬩箞
void Timer0Init(void) //1寰绉扏11.0592MHz
{
TMOD &= 0xF0; //瀹氭椂鍣1淇濇寔铡熺姸镐佷笉鍙
TMOD |= 0x02; //瀹氭椂鍣0璁剧疆涓烘ā寮2
TH0=0xF7; //鍒濆间负256-9
TL0=0xF7; //閲嶈呭
EA=1; //寮镐讳腑鏂
ET0=1; //寮t1涓鏂
// TR0=1; // 寮濮嬭℃椂
void tm0_isr() interrupt 1 using 1//瀹氭椂鍣0涓鏂链嶅姟鍑芥暟锛屼娇鐢ㄥ伐浣滃瘎瀛桦櫒鍖1
{
}
///////////////////////////////////////////////////////////////
//External interrupt0 service routine
void exint0() interrupt 0 //(location at 0003H) //澶栭儴涓鏂0链嶅姟鍑芥暟
{
Alarm_Off = 1; //鎶ヨ︽带鍒朵俊鍙风疆1
}
////////////////////////////////////////////////////////////////
void delay200ms(void) //寤舵椂200姣绉
{
unsigned char a,b,c;
for(c=55;c>0;c--)
for(b=100;b>0;b--)
for(a=3;a>0;a--);
}
void delay500ms(void) //寤舵椂500姣绉
{
unsigned char a,b,c;
for(c=67;c>0;c--)
for(b=141;b>0;b--)
for(a=18;a>0;a--);
_nop_();
}
void delay1s(void) //寤舵椂1绉
{
unsigned char a,b,c;
for(c=95;c>0;c--)
for(b=26;b>0;b--)
for(a=185;a>0;a--);
}
//----------- INIT UART ----------------------------------------
void UartInit()//涓插彛鍒濆嫔寲鍑芥暟
{
SCON = 0x50; //8-bit variable UART
TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
EA = 1; //Open master interrupt switch
}
//------- Send a byte data to UART ----------------------------
void SendData(unsigned char dat)//鍙戦佷竴涓瀛楄妭
{
SBUF = dat; //Send data to UART buffer
while(!TI);
TI=0;
}
//------- Send a string to UART -------------------------------
void SendString(char *s)//鍙戦佸瓧绗︿覆
{
while (*s) //Check the end of the string
{
SendData(*s++); //Send current char and increment string ptr
}
} 鏀惰捣 sunqi8838306 5
⑵ 51单片机的函数
stdlib 头文件即standard library标准库头文件 stdlib 头文件里包含了C、C++语言的最常用的系统函数 该文件包含了的C语言标准库函数的定义 stdlib.h里面定义了五种类型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 具体的内容你自己可以打开编译器的include目录里面的stdlib.h头文件看看。
⑶ 51单片机c语言里 _nop_ 函数怎么用
在单片机c语言中直接调用库函数即可,具体如下:
#include<intrins.h> // 声明了void_nop_(void);
_nop_(); // 产生一条NOP指令。
该函数的作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当信乱游汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。
⑷ 51单片机中断函数怎么写
51单片机的中断函数格式:
例
void jump_low() interrupt 2
{
P1 = ~P1; //位反转
}
interrupt函数格式:
void +函数名()+interrupt +数字0~4
0 表示外部中断0
1 表示定时器/计数器(T0)
2外部中断1
3:定时器/计数器(T1)
4:串行口
⑸ 51单片机C语言中delay函数是怎么定义和使用的
定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x》0;x--)
for(y=110;y》0;y--);
}
使用:
void Delay10us(uchar Ms)
{
uchar data i;
for(;Ms》0;Ms--)
for(i=26;i》0;i--);
}
i=[(延时值-1.75)*12/Ms-15]/4
1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。
2、在延时子程序设计时,采用do?while,结构做循环体要比for结构做循环体好。
3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。
⑹ 51单片机delay()函数
delay函数是一般自己定义的一个延时函数。
C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数
{
unsigned int x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
⑺ 51单片机C语言程序中延时函数delay的原理是什么
原理:只是执行一些所谓的“无实际意义的指令”,如缩放或执行一个int自加,简单地说,就像高中数学中的“乘法原理”一样,很容易迅速增加上面提到的“无意义指令”的数量
关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。
当然,如果你在汇编中编程,情况就不同了,因为每条指令使用一定数量的机器周期,你当然可以根据所有指令使用的总时间来计算特定延迟的总时间。
(7)51单片机函数扩展阅读:
定义延迟XMS毫秒的延迟函数
Voiddelay(unsignedintXMS)//XMS表示需要延迟的毫秒数
{
无符号intx,y;
For(x=XMS;X0;X-)
For(y=110;Y”0;Y-);
}
使用:
VoidDelay10us(ucharMs)
{
Uchar数据我;
(;女士“0;------Ms)
对于(I = 26)我> 0;我-);
}
I=[(延迟值-1.75)*12/ms-15]/4
⑻ 51单片机用c语言怎么写延时函数
延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M *100(s),即1/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达呢?我们可以用两套for循环
void delay(int i){
int x,y;
for(x=i;x>0;x--){
for(y=120;y>0;y--)
}
}
参数 i 代表该函数延时多少ms