标签:style c class blog code java
#include
<reg52.h>
//头文件调用,写程序时都要加上,
#define uint unsigned int //宏定义,为了后面定义变量书写简便
#define
uchar unsigned char
uchar
mm=0;
//全局变量
uchar
flag_get=0;
//定义标志位,为1则灯亮
/****************************************************************************/
/*
名称:延时函数
*/
/*
功能:C语言中常用的for循环延时方法
*/
/*
延时长短可以通过变量初值来改变
*/
/****************************************************************************/
void Delay1ms(uint count)
{
uint i,j;
for(i=0;i<count;i++)
for(j=0;j<110;j++);
}
/****************************************************************************/
/*
名称:主函数
*/
/*
功能:利用定时器1每隔1秒使P1口LED灯全亮 */
/****************************************************************************/
void
main()
{
TMOD=0x10;
//设置T1工作于定时方式1(有16位计数)
TH1=(65536-50000)/256;
//定时器1赋初值,是TH1而不是TH0噢(若要设置是定时器0的话,把1改为0,下同);计数了50000次,即为50ms
TL1=(65536-50000)%256;
EA=1;
//开总中断
ET1=1;
//开定时器1中断
TR1=1;
//开始计数
while(1)
{
if(flag_get==1)
{
P1=0x00;
Delay1ms(200);
flag_get=0;
}
else P1=0xff;
}
}
/****************************************************************************/
/*
名称:定时器1中断
*/
/*
功能:通过定时1秒产生中断使标志位置1
*/
/****************************************************************************/
void timer1() interrupt 3
//注意了,这里是3,为定时器1的标号,若改为1的话则为定时器0,要区别于基于TMOD控制的工作方式和中断向量入口地址
{
mm++;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
if(mm==20)
{
mm=0;
flag_get=1;
}
}
外部中断1/0
#include <reg52.h> //头文件调用,写程序时都要加上, #define uint unsigned int //宏定义,为了后面定义变量书写简便 #define uchar unsigned char Init() { EX0 = 1; //打开外部中断(若要设置外部中断1的话,把0改为1,下同) IT0 = 1; //设置外部中断的脉冲触发方式 EA = 1; //开总中断 } void main (void) { Init(); while(1) { //you want。。。 } } void exter0(void) interrupt 0 //0位外部中断0的的标号,2为外部中断2的标号 { //you want。。。 }
标签:style c class blog code java
原文地址:http://www.cnblogs.com/workstudy123/p/3747568.html