微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机常用功能函数

51单片机常用功能函数

时间:11-24 来源:互联网 点击:
delay延时函数

void delayms (uint xms) //(毫秒单位

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--)

}

单片机 外部中断0设置开启 P3.2口为中断0出入口

EA=1; //开启总中断

EX0=1;//开启外部中断0

TCON=0x01;//设置触发方式(此方式为下降沿)可对每一位操作

void exter0 () interrupt 0 //中断程序

{

......

}

时钟中断 1秒钟时钟 晶振为11.0592

//注意:1.对TMOD赋值,确定T0和T1的工作方式。2.计算初值,写入TH0、TL0或TH1、TL1。

3.中断方式,对IE赋值,开放中断。4.使TR0或TR1置位,启动定时器/计数器时或计数。

void main

{

TMOD=0x01;//设置定时器0模式(16位,定时器模式,内部) 也可以将初始化单独写成函数

TH0=(65536-50000)/256;//装初值

TL0=(65536-50000)%6;

EA=1;//开总中断

ET=1;//开定时器0中断

TR0=1;//启动定时器0

if(tt==20)

{

tt=0;

.......

}

}

void timer0() interrupt 1 //定时器中断

{

TH0=(65536-50000)/256;//由于进入中断16为计数器会清零,所以重新赋值

TL0=(65536-50000)%6;

tt++;

}

按键消除浪涌处理

void main()

{

if(key1==0)

{

delay(5);//尽量在5毫秒以上

if(key1==0)

{

// d1=0;

// num++; 这里可以写自己需要的程序

// if(num==10)

// num=0;

}

while(!key1);//判断是否松手

delay(5);//消除松手时产生的浪涌

while(!key1);

}

DA转化

void main()

{

P3.2=0;//DA的CS-为低电平有效,打开DA的片选

P3.6=0;//DA的wr低电平,

P0=0xFF;//把灯点亮,而且是最亮。如果 P0=0;灯灭. P0输出不同的2进制可以控制LED的亮度。

while(1);

}

AD转换 AD0804

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top