导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[quote][b]以下是引用[i]wake在2004-10

* 65314: [求助]救我!!!!

   xiaodao35 
xiaodao35发表的帖子 

 

以下是引用wake在2004-10-27 12:17:43的发言:
[求助]救我!!!!#include   <stdio.h>  
 #include   <reg51.h>  
 #include   <absacc.h>  

 #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的,他可能变化很大。
   以上两个问题,我一直不得其解。希望各位大虾指教。谢谢
 



能显示20说明k++是对的,加到20之后你的程序就到有了。
也就是说,你的程序没有大循环。
加上:
while(1)
{
k=0;
.
.
.
.
.
while(k  <=20);
}
}


发表时间:2004年10月27日20:01:23

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  65340.[详细]感谢xiaodao345给我的帮助,经过昨天的调试发现,问题出在for语句上,必须在while(1..
摘要:感谢xiaodao345给我的帮助,经过昨天的调试发现,问题出在for语句上,必须在 while(1) { k=0; do{ . . . j==0; ......(218字)
- [wake][855次] 2004年10月28日

[上一篇帖子]:我是用wavecom m1206b,单片机利用w77e58,通过串口直接相连!
[下一篇帖子]:[quote][b]以下是引用[i]xiongfoolboy在2004-10-27 15: