STC51单片机实现报警亮灯中断等多功能
#include <reg52.h>
#include "intrins.h"//调用crol cror 函数
#define led P1
sbit L0=P1^0;
sbit L1=P1^1;
sbit L2=P1^2;
sbit L3=P1^3;
sbit L4=P1^4;
sbit K1=P3^0;//按键 K1.2.3.4
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;
sbit A=P2^0;//段选
sbit G=P2^1;//位选
sbit C=P2^2;//点阵
sbit D=P2^3;//蜂鸣器
sbit E=P2^5;//液晶
sbit F=P2^7;//时钟使能端
void delay(int z)
{
int x,y;
for(x=100;x>0;x--)
for(y=z;y>0;y--);
} //延迟函数
//串口通信函数
void UsartInit()
{
SCON=0X50; //设置工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80;
TH1=0XF3; //计数器初始值设置
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void main()
{int i;
char temp;
//流水灯
led=0xfe;
delay(500);
{
for(i=0;i<7;i++)
{
led=_crol_(led,1);//依次向左进1位
delay(500);
}
for(i=0;i<7;i++)
{
led=_cror_(led,1);//向右进1位
delay(500);
}
}
//蜂鸣器
D=0; //开
delay(500);
D=1;//关
delay(500);
//数码管
C=0;//关闭共用P2的其他引脚
D=1;
E=0;
F=0;
A=1;//段选
P0=0X3F;//选择可以表示的字符0(共阴)
A=0;
P0=0XFF;
G=1;//位选
P0=0XFE;//选择数码管的第一位
G=0;
delay(500);
A=1;//段选
P0=0X06;//数码管第二位
A=0;
P0=0XFF;
G=1;//位选
P0=0XFD;//选择可以表示的字符1
G=0;
delay(500);
A=1;//段选
P0=0X06;//选择可以表示的字符1
A=0;
P0=0XFF;
G=1;//位选
P0=0XFB;//数码管第三位
G=0;
delay(500);
led=0xFF;//中断
EA=1; //打开总中断允许位
EX0=1; //打开外部中断使能位
//默认电平触发
led=0XFF;
//定时器
TMOD |=0X01;//按位或 选择定时器0
TH0=0X00;//高八位 计数器赋值
TL0=0X00;//低五位 高三位未用 默认都为0
EA=1;//打开总中断
ET0=1;//打开定时器0中断允许
TR0=1;//定时器启动
while(1)
{//按键
P1=0xff;
L0=K1;//L0灯与K1状态相同(无防抖)
L1=K2;//同上
L2=K3;//同上
L3=K4;//同上
//矩阵按键
/*P3=0xfe; //1111 1110 P3.0排
temp=P3;
temp=temp&0xf0; //11110000屏蔽其他排干扰
while(temp!=0xf0)
{ temp=P3;
switch(temp)
{ case 0xee:
L0=0;
break;
case 0xde:
L1=0;
break;
case 0xbe:
L3=0;
break;
case 0x7e:
L3=0;
break;
} */
}
//串口
UsartInit();
}
}
void Usart() interrupt 4 //串口通信接收函数 4串行中断 1工作寄存器
{
char receiveData;
receiveData=SBUF;//接收到的数据
RI = 0;//清除中断
SBUF=receiveData;//将接收到的数据存入寄存器
while(!TI); //等待发送完成
TI=0; //清楚发送数据
}
void Timer0_isr(void) interrupt 1 using 1 //定时器接收函数 1定时器0 1工作寄存器
{
TH0=0X00; //计时器赋值
TL0=0X00;
led=~led; //P1改变状态
delay(500);
TR0=0; //关闭定时器
}
void ISR_KEY(void) interrupt 0 using 1 //中断函数 0外部中0 1工作寄存器
{
led=0xfe;
delay(500);
}
- 点赞
- 收藏
- 关注作者
评论(0)