久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4441|回復: 17
打印 上一主題 下一主題
收起左側

哦 無語 為什么分開沒問題 合起來就有問題 (編程問題,我是新手)

[復制鏈接]
跳轉到指定樓層
樓主
ID:65766 發表于 2014-9-12 20:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
        #include<intrins.h>          
#define uchar unsigned char
#define uint unsigned int
uchar temp;
void delay(uint);
void main()
{
   temp=0xfe;
  P1=temp;
   while(1)
  {
          delay(500);
           temp=_crol_(temp,1);
        P1=temp;

  }
}
   void delay (uint z)
  {
   uint x,y;
   for(x=z;x>0;x--)
   for(y=110;y>0;y--);

  }這是第一個,下面還有
填了一個數碼管的之后就產生不了效果了
這是合起來的效果的程序
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar aa,num,temp;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x6f,0x7f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint);
void main()
{ num=0;
  aa=0;
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
temp=0xfe;
P1=temp;
  wela=1;                                                                                     
  P0=0xc0;
  wela=0;
  dula=1;
  P0=table[0];
  dula=0;
  while(1)
  {
          delay(500);
           temp=_crol_(temp,1);
        P1=temp;
        if(aa==40)
                {        num++;
                        aa=0;
                if(num==16)
                        num=0;       
                dula=1;
                P0=table[num];
                dula=0;
                 }
        }          

}
   void delay(uint x)
   {
           uint i,j;
        for(i=x;i>0;i--)
        for(j=110;j>0;j--);
       
   }
   void time() interrupt 3
   {
            TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;               
                   aa++;
   }

這個程序到底哪兒錯了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:63656 發表于 2014-9-12 21:21 | 只看該作者
你是想把這兩個程序合起來運行嗎
回復

使用道具 舉報

板凳
ID:65766 發表于 2014-9-12 22:28 | 只看該作者
2842687945 發表于 2014-9-12 21:21
你是想把這兩個程序合起來運行嗎

不是 第二個就是合起來的那個 就運行不起來了 我不知道哪兒錯了
回復

使用道具 舉報

地板
ID:65766 發表于 2014-9-12 22:28 | 只看該作者
2842687945 發表于 2014-9-12 21:21
你是想把這兩個程序合起來運行嗎

不是 第二個就是合起來的那個 就運行不起來了 我不知道哪兒錯了
回復

使用道具 舉報

5#
ID:65766 發表于 2014-9-12 22:28 | 只看該作者
2842687945 發表于 2014-9-12 21:21
你是想把這兩個程序合起來運行嗎

不是 第二個就是合起來的那個 就運行不起來了 我不知道哪兒錯了  無語
回復

使用道具 舉報

6#
ID:64817 發表于 2014-9-12 22:46 | 只看該作者
time() interrupt 3 你看是不是3應當改為1呀。。ET0=1;TR0=1;應當是定時器中斷T0
相應設置,定時器中斷T0的中斷源自然優先級排序為1。time() interrupt 1。

評分

參與人數 1威望 +40 黑幣 +40 收起 理由
admin + 40 + 40 回帖助人的積分獎勵!!!!

查看全部評分

回復

使用道具 舉報

7#
ID:19715 發表于 2014-9-12 22:52 | 只看該作者
通信-冷 發表于 2014-9-12 22:28
不是 第二個就是合起來的那個 就運行不起來了 我不知道哪兒錯了  無語

程序分成兩個單獨看,
單獨第2個程序是跑時間的,明明就存在問題。
先把這個問題處理好
回復

使用道具 舉報

8#
ID:63656 發表于 2014-9-12 22:57 | 只看該作者
void delay(uint);你這個是函數聲明嗎?錯啦哦,這是一個錯誤
回復

使用道具 舉報

9#
ID:63656 發表于 2014-9-12 23:00 | 只看該作者
void time() interrupt 3這個也錯了?void time() interrupt 1這樣才對(定時器0是第1種中斷源)

評分

參與人數 1威望 +40 黑幣 +40 收起 理由
admin + 40 + 40 回帖助人的積分獎勵!!!!

查看全部評分

回復

使用道具 舉報

10#
ID:63656 發表于 2014-9-12 23:13 | 只看該作者
你想實現什么功能
回復

使用道具 舉報

11#
ID:65766 發表于 2014-9-14 12:04 | 只看該作者
abeimao 發表于 2014-9-12 22:46
time() interrupt 3 你看是不是3應當改為1呀。。ET0=1;TR0=1;應當是定時器中斷T0
相應設置,定時器中斷T0 ...

哦哦 這個是錯的
回復

使用道具 舉報

12#
ID:65766 發表于 2014-9-14 12:05 | 只看該作者
2842687945 發表于 2014-9-12 22:57
void delay(uint);你這個是函數聲明嗎?錯啦哦,這是一個錯誤

這個聲明哪里錯了嗎 請指導
回復

使用道具 舉報

13#
ID:65766 發表于 2014-9-14 12:05 | 只看該作者
2842687945 發表于 2014-9-12 23:00
void time() interrupt 3這個也錯了?void time() interrupt 1這樣才對(定時器0是第1種中斷源)

哦 這個事錯了 還有嗎
回復

使用道具 舉報

14#
ID:65766 發表于 2014-9-14 12:09 | 只看該作者
2842687945 發表于 2014-9-12 23:13
你想實現什么功能

流水燈以一秒的間隔流動 數碼管用中斷的方式以1,2-a,b,c..的順序流動 大概是一秒吧 記得不親了
回復

使用道具 舉報

15#
ID:63656 發表于 2014-9-14 12:55 | 只看該作者
本帖最后由 2842687945 于 2014-9-14 12:59 編輯
通信-冷 發表于 2014-9-14 12:05
這個聲明哪里錯了嗎 請指導

void delay(uint x),你漏x了(我復制過你的程序編譯,沒有錯誤,就是不知你想實現什么功能)如果你思路對了,應該沒有問題了
回復

使用道具 舉報

16#
ID:65766 發表于 2014-9-14 16:30 | 只看該作者
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar aa,num,temp;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x6f,0x7f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x);
void main()
{ num=0;
  aa=0;
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
temp=0xfe;
P1=temp;
  wela=1;                                                                                     
  P0=0xc0;
  wela=0;
  dula=1;
  P0=table[0];
  dula=0;
  while(1)
  {
          delay(500);
           temp=_crol_(temp,1);
        P1=temp;
        /*if(aa==40)
                {        num++;
                        aa=0;
                if(num==16)
                        num=0;       
                dula=1;
                P0=table[num];
                dula=0;
                 }*/
        }          

}
   void delay(uint x)                                                                                                                                  
   {
           uint i,j;
        for(i=x;i>0;i--)
        for(j=110;j>0;j--);
       
   }
   void time() interrupt 1
   {
            TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;               
                   aa++;
                 if(aa==40)
                {        num++;
                        aa=0;
                if(num==16)
                        num=0;       
                dula=1;
                P0=table[num];
                dula=0;
                 }
   }
這是正確的程序  它實現的流水燈以一秒的間隔流動 數碼管用中斷的方式以1,2-a,b,c..的順序流動 大概是一秒吧 記得不親了 看了正確的程序與錯誤的 組要錯誤是數碼管的程序不應寫在主函數流水燈的下面 這樣會導致數碼管的程序無法運行 我突然有個疑問就是程序運行的順序是從上到下吧 主函數與外部函數的順序又是怎樣呢 比如說上面的 void time() interrupt 1
   {
            TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;               
                   aa++;
                 if(aa==40)
                {        num++;
                        aa=0;
                if(num==16)
                        num=0;       
                dula=1;
                P0=table[num];
                dula=0;
                 }
   }這一段程序 他和主函數運行的順序又是怎樣呢 還是說可以同時運行
回復

使用道具 舉報

17#
ID:64817 發表于 2014-9-15 00:05 | 只看該作者
先運行這一段
void main()
{ num=0;
  aa=0;
TMOD=1;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256  到這里時間到了,進入中斷函數,這時中斷和主函數中循環同時運行,單片機的定期器和中斷是單片機另外一系統,他不占用單片機的計算資源。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 三级av在线 | 福利久久 | 污片在线免费观看 | 色片在线观看 | 99国产精品99久久久久久 | 亚洲乱码一区二区三区在线观看 | www.亚洲精品 | 精品国产乱码久久久久久丨区2区 | 国产99视频精品免费视频7 | 亚洲精品久久久久avwww潮水 | 精品国偷自产在线 | 免费黄色的视频 | 国内精品久久久久久久影视简单 | 成人一级视频在线观看 | 久久国产欧美日韩精品 | 在线一区二区三区 | 97成人免费| 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 2018天天干天天操 | 超碰免费在 | 精品视频一区二区三区 | www.精品国产 | 国产亚洲一区二区精品 | 久久亚洲精品国产精品紫薇 | 亚洲一区二区久久 | 久久精品99 | 久久极品| 成人影音| 成人aaa视频| 成人av网站在线观看 | 欧美人妖网站 | 亚洲天堂中文字幕 | 老头搡老女人毛片视频在线看 | 国产精品永久 | 一级全黄少妇性色生活免费看 | 久草新在线 | 高清国产午夜精品久久久久久 | 欧美日韩视频在线第一区 | 激情一区 | 亚洲国产精品一区 | 成人av一区二区在线观看 |