我想要点阵屏亮一条线,但是没有亮,请问为什么?/****************************************************************
元器件:51单片机、LED、8*8点阵
目标: 定时器控制8*8点阵显示图形
****************************************************************/
#include<reg52.h>
sbit led = P0^0;
unsigned int x=0;
/***刷屏处理******************************************************/
void sp(){
static unsigned int i =0;
P0= 0xff;
P3 = 0x01;
switch(i){
case 0:
P0 = 0xfe;break;//1111 1110
case 1:
P0 = 0xfd;break;//1111 1101
case 2:
P0 = 0xfb;break;//1111 1011
case 3:
P0 = 0xf7;break;//1111 0111
case 4:
P0 = 0xef;break;//1110 1111
case 5:
P0 = 0xdf;break;//1101 1111
case 6:
P0 = 0xbf;break;//1011 1111
case 7:
P0 = 0x7f;break;//0111 1111
default:break;
}
if(7 == i++){
i=0;
}
}
/***中断处理T0****************************************************/
void dzq_sx_dz(void) interrupt 1{//刷新点阵
TH0 = (8192 - 2000)>>5; //取高8 位
TL0 = (8192 - 2000)&0x1F;//取低5位
sp();
}
/***定时器初始****************************************************/
void dsq_init(void){
TMOD = 0x00;//定时器模式1 13位
TH0 = (8192 - 2000)>>5; //取高8位
TL0 = (8192 - 2000)&0x1F;//取低5位
ET0 = 1;//中断 外部定时器0 开
EA = 1;//全局中断 开
TR0 = 1;//定时器0 开
}
/***主程序******************************************************/
void main(void){
dsq_init();
while(1);
}
|