#define s1 XBYTE[0x0300]
#define s2 XBYTE[0x0700]
#define s3 XBYTE[0x0b00]
#define DA XBYTE[0x4000]
typedef unsigned char uchar;
unsigned char code letter[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay_1(void);
void delay_2(void);
void delay_3(void);
void main(void)
{
int j;
uchar k;
uchar m;
uchar l;
uchar f;
k=0;
do
{
f=k;
k++;
for(j==0;j <=500;j++)
{
DA=0;
delay_1();
DA=64;
delay_2();
DA=175;
delay_3();
DA=150;
delay_3();
DA=64;
delay_2();
}
m=f/10;
l=f%10;
s1=letter[m];
s2=letter[l];
}
while(k <=20);
}
void delay_1(void)
{
uchar h;
for(h=0;h <=100;h++)
{;}
}
void delay_2(void)
{
uchar h;
for(h=0;h <=127;h++)
{;}
}
void delay_3(void)
{
uchar h;
for(h=0;h <=75;h++)
{;}
}
我是一个单片机初学者。这是我前几天写的一个东东,目的是发一个阶梯波。首先电压为0v,持续0.2ms,接着为1v,持续0.3ms,再接着为3.5v,持续0.1ms,再是3v,持续0.1ms,接着为1v,持续0.3ms。总周期为1ms。并要求发10000次,每500次使显示器加1,直到20。然而,在这里我却遇到几个问题:
1:显示没有加一的过程,直接显示20,且将k++改为++k时,显示为21。
2:对于延时程序的调试上,有很多随机因素。比如delay_2,若将h〈=127改为h〈=125,则严时由0.4ms变为0.2ms。而且,很多原本设计为0.1ms的,他可能变化很大。
以上两个问题,我一直不得其解。希望各位大虾指教。谢谢
以下是引用wake在2004-10-27 12:17:43的发言: [求助]救我!!!!#include <stdio.h> #include <reg51.h> #include <absacc.h> #define s1 XBYTE[0x0300] int j; uchar f; for(j==0;j <=500;j++) s2=letter[l]; void delay_1(void) 我是一个单片机初学者。这是我前几天写的一个东东,目的是发一个阶梯波。首先电压为0v,持续0.2ms,接着为1v,持续0.3ms,再接着为3.5v,持续0.1ms,再是3v,持续0.1ms,接着为1v,持续0.3ms。总周期为1ms。并要求发10000次,每500次使显示器加1,直到20。然而,在这里我却遇到几个问题: |