最近入手一单片机开发板,之前在学习点亮流水灯时,下载程序可以,还挺快的,到最后学数码管时,板子老是烧不进程序,于是,也就没用那板子了。到现在,仿那板子的参数做了一个最小系统,还是一个样,请问这是什么原因?
这是点灯的程序(可以烧写):
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit P01 = P1^0; /*定义P1.1端口*/
void main(void)
{
P01 = 0; /*点亮与P0.0的LED发光二极管*/
}
这是数码管的程序(不能烧写):
/*6位数码管循环显示0123456789ABCDEF*/
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6; //数码管段选,锁存器控制信号
sbit wela=P2^7; //数码管位选,锁存器控制信号
/*1MS为单位的延时程序*/
void delay_1ms(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
void main()
{
uchar i;
uchar j;
uint count=0;
uchar sled_disp_buff[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //数码管显示编码(1-F)
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar sled_bit_table[]={0x7e,0x7d,0x7b,0x77,0x6f,0x5f};/*定义点亮的数码管与数组的关系*/
while(1){
for(j=0;j<100;j++){ /*单次字符显示延时*/
for(i=0;i<6;i++){ /*扫描输出6位数码管*/
////////////////////////////////////////////////////////////////
P0=0XFF;//关掉数码管的位选信号。阻止数码管受到P0口信号的影响。
delay_1ms(1);
wela=1;
delay_1ms(1);
wela=0;
////////////////////////////////////////////////////////////////
dula=0;
P0 = sled_disp_buff[i+count]; /*显示数字 i*/
dula=1;
dula=0;
wela=0;
P0=sled_bit_table[i]; //数码管位选
wela=1;
wela=0;
delay_1ms(1);
}
}
count++;
if(count>=11) count=0; /*把数码管数组的数据输出完成后重新开始*/
}
} |