找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1417|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

數(shù)碼管C語言程序在while(1)程序內(nèi)部不能顯示前面的位,怎么解決。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:626699 發(fā)表于 2020-1-5 22:08 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
這個程序里面,如果數(shù)碼管顯示程序不在WHILE(1)的內(nèi)部,58就可以顯示在數(shù)碼管上,如果把它放在WHILE(1)里面,如上面的程序那樣,只能讀出來
最后一位8,前一位5閃一下就沒了。這是為什么?如果必須有WHILE(1)的話,請大師傅幫解決一下。謝謝
  1. include<reg52.h>

  2. sbit dula=P2^6;
  3. sbit wela=P2^7;

  4. #define uchar unsigned char
  5. #define uint unsigned int



  6. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79 ,0x71};
  7. void delay(uchar a)
  8. {
  9.          uchar x,y;
  10.         for(x=a;x>0;x--)
  11.         for( y=109;y>0;y--);
  12. }
  13. void main()
  14. {
  15.     uchar read=0x58;
  16.         bit read_ok=1;
  17.    while(1)
  18.    {
  19.           if(read_ok)
  20.                  {         
  21.                          read_ok=0;
  22.         
  23.                            wela=1;
  24.                            P0=0xfe;
  25.                            wela=0;
  26.                            dula=1;
  27.                            P0=table[read/16];
  28.                            dula=0;
  29.                            delay(5);
  30.                            wela=1;
  31.                            P0=0xfd;
  32.                            wela=0;
  33.                            dula=1;
  34.                            P0=table[read%16];
  35.                            dula=0;
  36.                           delay(5);
  37.         
  38.                      }
  39.                                 
  40.                                 
  41.                 }
  42. }
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2020-1-6 07:12 | 只看該作者
因?yàn)?br /> if(read_ok)
{         
     read_ok=0;
就只能執(zhí)行一次后再也進(jìn)不了if(read_ok)

  1. #include<reg52.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit dula=P2^6;
  5. sbit wela=P2^7;

  6. uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79 ,0x71};void delay(uint a)
  7. {
  8.         uint x,y;
  9.         for(x=a;x>0;x--)
  10.                 for( y=110;y>0;y--);
  11. }
  12. void main()
  13. {
  14.         uchar read=0x58;
  15.         bit read_ok=1;
  16.    while(1)
  17.    {
  18.                 P0=0x00;//消隱
  19.                 dula=1;
  20.                 dula=0;
  21.                 if(read_ok)
  22.                 {                        
  23.                         P0=0xfe;
  24.                         wela=1;
  25.                         wela=0;
  26.                         P0=table[read/16];
  27.                         dula=1;
  28.                         dula=0;
  29.                         read_ok=~read_ok;
  30.                 }
  31.                 else
  32.                 {
  33.                         P0=0xfd;
  34.                         wela=1;
  35.                         wela=0;
  36.                         P0=table[read%16];
  37.                         dula=1;
  38.                         dula=0;
  39.                         read_ok=~read_ok;       
  40.                 }
  41.                 delay(5);
  42.         }
  43. }
復(fù)制代碼
回復(fù)

使用道具 舉報

板凳
ID:89515 發(fā)表于 2020-1-6 07:55 來自手機(jī) | 只看該作者
read_ok被你清零了
回復(fù)

使用道具 舉報

地板
ID:497656 發(fā)表于 2020-1-7 16:54 | 只看該作者

yes,問題所在
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表