其实就是一些代码但是,我这个灯怎么光线这么微弱啊?????
#include "reg52.h"
sbit s7=P3^0;
sbit s6=P3^1;
sbit s5=P3^2;
sbit s4=P3^3;
sbit l1=P0^0;
sbit l2=P0^1;
sbit l3=P0^2;
sbit l4=P0^3;
sbit l5=P0^4;
sbit l6=P0^5;
unsigned char stat=0;
void selecthc573(unsigned char channel){
switch(channel){
case 4:
P2 = (P2 & 0x1f) | 0x80;
break;
case 5:
P2 = (P2 & 0x1f) | 0xa0;
break;
case 6:
P2 = (P2 & 0x1f) | 0xc0;
break;
case 7:
P2 = (P2 & 0x1f) | 0xe0;
break;
}
}
void delay(void) //@11.0592MHz
{
unsigned char data i, j;
i = 216;
j = 37;
do
{
while (--j);
} while (--i);
}
void scan_key_alone(){
if(s7==0){
delay();
if(s7==0){
if(stat==0){
l1=0;
stat=1;
}else if(stat==1){
l1=1;
stat=0;
}
}
}
if(s6==0){
delay();
if(s6==0){
if(stat==0){
l2=0;
stat=2;
}
else if(stat==2){
l2=1;
stat=0;
}
}
}
if(s4==0){
delay();
if(s4==0){
if(stat==0){
}else if(stat==1){
l3=0;
while(s4==0);
l3=1;
}else if(stat==2){
l5=0;
while(s4==2);
l5=1;
}
}
}
if(s5==0){
delay();
if(s5==0){
if(stat==0){
}else if(stat==1){
l4=0;
while(s5==0);
l4=1;
}else if(stat==2){
l6=0;
while(s5==2);
l6=1;
}
}
}
}
void main(){
selecthc573(4);
while(1){
scan_key_alone();
}
}
这个需要完成的要求是这样的
使用的过程中我发现一个问题 就是欧老师的延时程序在我这里是无法使用的,准确来说,只要使用欧老师的延时程序(程序如下) 我的代码就会没办法这次运行
void delay(unsigned char t){
while(t--);
}
然后我换成了stc-isp的自带的设计延迟的功能设计出来的程序
void Delay20ms(void) //@11.0592MHz
{
unsigned char data i, j;
i = 216;
j = 37;
do
{
while (--j);
} while (--i);
}
程序就正常了
然后我运行之后hhhhhhh光线贼小 我不知道为什么????难受啊马飞。。。
但是严格来讲 亮还是亮了的。。。。虽然光线非常微弱