四川信息职业技术学院毕业设计说明书(论文)第19页
TR0=0;//停止定时器/计数器0 TH0=(65536-30000)/256; TL0=(65536-30000)%6; EX1=1;//允许外部中断1中断
IT1=0;//将外部中断1的中断触发方式控制位置0,即设置外部中断1为电平触发方式
PX1=1;//将外部中断1中断优先级控制位置1 ET1=1;//允许T1中断
TR1=0;//停止定时器/计数器1 TH1=(65536-50000)/256; TL1=(65536-50000)%6; P1=0xFF;
P2=0XFF;//将P1口和P2口置1,因为在P1口和P2口引脚时,应先向锁存器写\
temp1=0x7F; temp2=0x7F; cnt=8; aa=0; bb=0;
key_int1=1; key1=1; key2=1; key3=1; key4=1;
temp_int1=key_int1; temp_key1=key1; temp_key2=key2; temp_key3=key3; temp_key4=key4; beep=1;
flag=0;//分别对temp1、temp2、cnt、aa、bb、key_int1、key1、key2、key3、key4、temp_int1、temp_key1、temp_key2、temp_key3、temp_key4、beep、flag赋值 }
//彩灯方式1 void FUN1() {
cnt=8;
temp1=0X7F; temp2=0X7F; while(cnt!=0) {
cnt--;
temp1=_crol_(temp1,1);
四川信息职业技术学院毕业设计说明书(论文)第20页
delay(500); P2=0xFF; P1=temp1;
temp2=_crol_(temp2,1); delay(500); P1=0xFF; P2=temp2; }
P1=0x0ff; P2=0x0ff; }
//彩灯方式2 void FUN2() {
temp1=0xAA; temp2=0xAA; TR0=1;
while(TR0==1); P1=0x0ff; P2=0x0ff; }
//彩灯方式3 void FUN3() {
temp1=0x0; temp2=0x0; TR1=1;
while(TR1==1); P1=0x0ff; P2=0x0ff; }
//主函数 void main() { init(); while(1) {
temp_key1=key1; temp_key2=key2; temp_key3=key3; temp_key4=key4; if(temp_key4==0) {
delay(5);
四川信息职业技术学院毕业设计说明书(论文)第21页
temp_key4=key4; if(temp_key4==0) {
FUN1(); FUN2(); FUN3(); } }
if(temp_key1==0) {
delay(5);
temp_key1=key1; if(temp_key1==0) {
FUN1(); } }
if(temp_key2==0) {
delay(5);
temp_key2=key2; if(temp_key2==0) {
FUN2(); } }
if(temp_key3==0) {
delay(5);
temp_key3=key3; if(temp_key3==0) {
FUN3(); } }
} }
//外部中断0服务程序
void _EX0_() interrupt 0 {
while(1) {
P1=0x77;
//三种彩灯方式依次执行
//执行彩灯方式1
//执行彩灯方式2
//执行彩灯方式3
四川信息职业技术学院毕业设计说明书(论文)第22页
P2=0xee; beep=!beep; delay(100); } }
//定时器0中断服务程序 void _ET0_() interrupt 1 {
TH0=(65536-50000)/256; TL0=(65536-50000)%6; aa++;
if(aa!=20) {
P1=temp1; P2=temp2;
temp1=_cror_(temp1,1); temp2=_cror_(temp2,1); delay(500); } else {
aa=0; TR0=0;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; } }
//外部中断1服务程序 void _EX1_() interrupt 2 {
PX1=0; PX0=1;
temp_int1=key_int1; while(temp_int1==0) {
temp_int1=key_int1; }
PX0=0; PX1=1; }
//定时器1中断服务程序 void _ET1_() interrupt 3 {
TH1=(65536-50000)/256;
四川信息职业技术学院毕业设计说明书(论文)第23页
}
TL1=(65536-50000)%6; bb++;
if(bb!=20) {
P1=temp1; P2=temp2;
temp1=~temp1; temp2=~temp2; delay(500); } else {
bb=0; TR1=0;
TH1=(65536-50000)/256; TL1=(65536-50000)%6; }