/*****************************************************
*项目名称:LED流水灯中断
*使用芯片:STC15F2K60S2
*使用晶振:12.000MHz
*日 期:2018.07.25
*作 者:Ice_image
*备 注:无
*版 本:v1.0
*实现功能:8位LED数码管显示
**********头文件********************************************/
#include<STC15F2K60S2.H>
/**********宏定义*************************************************/
#define u8 unsigned char
#define u16 unsigned int
/**************端口定义*******************************************/
//sbit led = P0^4; //直接在内存中定义
//#define led P04 //定义好之后换了一个名字
#define ledP P0
//#define led1 P05
#define Key P10
//注意变量覆盖问题
/**********************************************************
*函数名称:delay
*函数功能:执行延时程序
*入口函数:z
*出口参数:无
*备 注:无
**********************************************************/
void delay(u16 z){
u8 x;
u16 y;
for(y = z; y > 0; y--){
for(x = 255; x > 0; x--);
}
}
/**********************************************************
*函数名称:IO_Init
*函数功能:IO初始化程序
*入口函数:无
*出口参数:无
*备 注:无
**********************************************************/
void IO_Init(){
P0M0 = 0x00; //普通I/O输出
P0M1 = 0x00;
//led = 0x01;
}
/**********************************************************
*函数名称:main
*函数功能:执行主程序
*入口函数:无
*出口参数:无
*备 注:无
**********************************************************/
void main(){
bit flag = 1;
IT0 = 1; //外部中断0下降沿触发
EX0 = 1; //外部中断0允许位
EA = 1;
IO_Init();
while(1){
if(flag){
u8 x;
u8 A = 0x01;
for(x = 0; x < 8; x++){
ledP = ~A;
A = (A << 1);
delay(5000);
}
flag = 0;
}else{
u8 x;
u8 A = 0x40;
for(x = 0; x < 6; x++){
ledP = ~A;
A = (A >> 1);
delay(5000);
}
flag = 1;
}
}
}
/***************************************
*函数名称:Int0
*函数功能:实现硬件中断
***************************************/
//中断处理函数的写法 中断之后需要处理的程序放置在中断函数中
void Int0() interrupt 0{
ledP = 0x00;
delay(1000);
}
/**********************************************************数码管中断*************************************************************************************************/
/*****************************************************
*项目名称:LED数码管中断(从左到右)
*使用芯片:STC15F2K60S2
*使用晶振:12.000MHz
*日 期:2018.07.24
*作 者:Ice_image
*备 注:无
*版 本:v1.0
*实现功能:8位LED数码管显示
**********头文件********************************************/
#include<STC15F2K60S2.H>
/**********宏定义*************************************************/
#define u8 unsigned char
#define u16 unsigned int
/**************端口定义*******************************************/
//sbit led = P0^4; //直接在内存中定义
//#define led P04 //定义好之后换了一个名字
#define ledP P0
//#define led1 P05
#define Key P10
static u8 i;
//注意变量覆盖问题
/**********************************************************
*函数名称:delay
*函数功能:执行延时程序
*入口函数:z
*出口参数:无
*备 注:无
**********************************************************/
void delay(u16 z){
u8 x;
u16 y;
for(y = z; y > 0; y--){
for(x = 255; x > 0; x--);
}
}
/**********************************************************
*函数名称:IO_Init
*函数功能:IO初始化程序
*入口函数:无
*出口参数:无
*备 注:无
**********************************************************/
void IO_Init(){
P0M0 = 0xff; //P0.4为推挽输出
P0M1 = 0x00;
//led = 0x01;
ledP = 0x3f;
}
/**********************************************************
*函数名称:main
*函数功能:执行主程序
*入口函数:无
*出口参数:无
*备 注:无
**********************************************************/
void main(){
//u8 time[16] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09, 0x11, 0xc1, 0x63, 0x85, 0x61, 0x71}; //共阳极
u8 time[16] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //共阴极
IT0 = 1;
EX0 = 1;
EA = 1;
IO_Init(); //IO初始化
while(1){
for(i = 0; i < 10; i++){
ledP = time[i];
delay(5000);
}
}
}
void Int1() interrupt 0 {
i = 0;
ledP = 0x3f;
delay(2000);
}
|