刚学单片机,第一个单片机程序,看到仿真成功还是非常激动的,功能很简单,就是高入低出,低入高出,有点类似非门,但搞了好长时间才弄出来。。。。。。详见注释
#include<reg52.h>
#define CRYSTAL_FREQ 12000000//晶振频率(Hz)
#define uchar unsigned char
#define uint unsigned int
#define INTERRUPT_PERIOD 16//时钟配置1/16s
sbit led=P1^0;//定义led为输出端
sbit key=P0^0;//key输入端
void delayms(uint xms)//延时作用的子函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void Interrupt_Init()
{
TMOD = 0x01;
TH0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD) / 256;
TL0 = (65536 - CRYSTAL_FREQ / 12 / INTERRUPT_PERIOD) % 256;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void main()
{
Interrupt_Init();//调用中断声明子函数
while(1);
}
void power()
{
if(key==0) //检测输入端是否为低电平
{
delayms(10); //延时再次检测输入端是否为低电平
if(key==0)
{
led=1; //如果再次确认输入端为低,控制输出高电平,灯亮
}
else
led=0; //否则输出低电平,灯灭
}