欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5000|回復(fù): 9
收起左側(cè)

proteus中仿真,目標(biāo)是實(shí)現(xiàn)秒表功能,最大可以計(jì)到 999999秒,請(qǐng)問(wèn)下面這段程序哪錯(cuò)了?

[復(fù)制鏈接]
ID:379308 發(fā)表于 2018-9-22 16:00 | 顯示全部樓層 |閱讀模式

仿真圖

仿真圖


為啥把程序刷進(jìn)去沒(méi)反應(yīng)

  1. #include<reg52.h>
  2. unsigned char code a[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90};
  3. unsigned char abuff[]={0xFF,0xFF,0XFF,0XFF,0XFF,0XFF};
  4. unsigned char sec=0;   //記錄秒數(shù)
  5. unsigned char i=0;  //動(dòng)態(tài)掃描索引
  6. unsigned char count=0; //記錄中斷次數(shù) TF0=1為一次中斷

  7. void main()
  8. {
  9.         EA=1;     //開(kāi)啟中斷
  10.         ET0=1;    //開(kāi)啟定時(shí)器0中斷
  11.         TR0=1;   //開(kāi)啟定時(shí)器0
  12.         TMOD=0x01;
  13.         TH0=0xFC;
  14.         TL0=0x65;

  15.         while(1)
  16.         {
  17.                 if(count>=1000) // 中斷1000次,即達(dá)到1s
  18.                 {
  19.                         count=0;
  20.                         sec++;  //秒數(shù)加1
  21.                         abuff[0]=a[sec%10];
  22.                         abuff[1]=a[sec/10%10];
  23.                         abuff[2]=a[sec/100%10];
  24.                         abuff[3]=a[sec/1000%10];
  25.                         abuff[4]=a[sec/10000%10];
  26.                         abuff[5]=a[sec/100000%10];
  27.                         }
  28.                 }
  29.         }
  30.         
  31. void InterruptT0() interrupt 1  //interrupt為關(guān)鍵字,1表示定時(shí)器0中斷
  32. {
  33.         TH0=0xFC;
  34.         TL0=0x65;
  35.         count++;
  36.         P1=0xFF;  //顯示消隱
  37.         switch(i)
  38.                         {
  39.                                 case 0: P2=0x01;i++;P1=abuff[0];break;
  40.                                 case 1: P2=0x02;i++;P1=abuff[1];break;
  41.                                 case 2: P2=0x40;i++;P1=abuff[1];break;
  42.                                 case 3: P2=0x80;i++;P1=abuff[1];break;
  43.                                 case 4: P2=0x10;i++;P1=abuff[1];break;
  44.                                 case 5: P2=0x20;i=0;P1=abuff[1];break;
  45.                                 default:break;
  46.                         }                 
  47. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:303383 發(fā)表于 2018-9-22 16:28 | 顯示全部樓層
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

ID:111634 發(fā)表于 2018-9-22 17:09 | 顯示全部樓層
本帖最后由 zl2168 于 2018-9-22 19:30 編輯

實(shí)例93  99.9秒秒表
Proteus仿真一下,確認(rèn)有效。
實(shí)例95 99.9秒秒表.rar (38.86 KB, 下載次數(shù): 23)
99.9秒秒表.jpg
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1內(nèi)有常用的單片機(jī)應(yīng)用100案例,用于仿真實(shí)驗(yàn)操作,書(shū)中電路和程序設(shè)計(jì)有詳細(xì)說(shuō)明,電路與程序真實(shí)可靠可信可行,程序語(yǔ)句條條有注解。
若需99.99秒,硬件電路增加一位595。軟件程序增加0.01s10ms計(jì)數(shù)器,并修改相應(yīng)計(jì)數(shù)顯示程序。
回復(fù)

使用道具 舉報(bào)

ID:135253 發(fā)表于 2018-9-23 16:38 | 顯示全部樓層
count 不能定義為char
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2018-9-23 18:54 | 顯示全部樓層
unsigned char的取值范圍是0-255
char是有長(zhǎng)度的,你好好看看書(shū),會(huì)有詳細(xì)的解釋

unsigned char sec=0;   //記錄秒數(shù)
unsigned char i=0;  //動(dòng)態(tài)掃描索引
unsigned char count=0; //記錄中斷次數(shù) TF0=1為一次中斷

                if(count>=1000) // 中斷1000次,即達(dá)到1s
                {
                        count=0;
                        sec++; //秒數(shù)加1


unsigned char是8位的,占一個(gè)寄存器,  無(wú)符號(hào)字符型,范圍(0-255)
unsigned int是16位,  占2個(gè)寄存器,   無(wú)符號(hào)整型 范圍(0-65,535)
unsigned long是32位, 占4個(gè)寄存器,   無(wú)符號(hào)整型 范圍(0-4,294,967,296)

sec 定義為 unsigned long sec, 可以計(jì)到 999999秒
count  定義為 unsigned int
回復(fù)

使用道具 舉報(bào)

ID:726822 發(fā)表于 2020-4-11 12:29 | 顯示全部樓層
zl2168 發(fā)表于 2018-9-22 17:09
實(shí)例93  99.9秒秒表
先Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程— ...

親,請(qǐng)問(wèn)能不能把keil程序發(fā)一下呢謝謝你
回復(fù)

使用道具 舉報(bào)

7#
無(wú)效樓層,該帖已經(jīng)被刪除
8#
無(wú)效樓層,該帖已經(jīng)被刪除
ID:726822 發(fā)表于 2020-4-11 12:32 | 顯示全部樓層
zl2168 發(fā)表于 2018-9-22 17:09
實(shí)例93  99.9秒秒表
先Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程— ...

親,請(qǐng)問(wèn)能不能把keil程序發(fā)一下呢謝謝你
回復(fù)

使用道具 舉報(bào)

ID:591189 發(fā)表于 2020-4-13 08:29 | 顯示全部樓層
count和sec換成UINT,i給個(gè)初值,定時(shí)器的初裝值放到啟動(dòng)前,switch語(yǔ)句改正好,應(yīng)該可以運(yùn)行了,但到不了999999,建議把秒數(shù)分成兩部分,高三位和第三位這樣定義才放的下。
回復(fù)

使用道具 舉報(bào)

ID:726822 發(fā)表于 2020-4-18 19:37 | 顯示全部樓層
angmall 發(fā)表于 2018-9-23 18:54
unsigned char的取值范圍是0-255
char是有長(zhǎng)度的,你好好看看書(shū),會(huì)有詳細(xì)的解釋

十分感謝!
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2020-4-19 07:12 | 顯示全部樓層
錯(cuò)誤:unsigned char count=0;
正確:unsigned int   count=0;
錯(cuò)誤:
        case 0: P2=0x01;i++;P1=abuff[0];break;
        case 1: P2=0x02;i++;P1=abuff[1];break;
        case 2: P2=0x40;i++;P1=abuff[1];break;
        case 3: P2=0x80;i++;P1=abuff[1];break;
        case 4: P2=0x10;i++;P1=abuff[1];break;
        case 5: P2=0x20;i=0;P1=abuff[1];break;
正確:
        case 0: P2=0x01;i++;P1=abuff[0];break;
        case 1: P2=0x02;i++;P1=abuff[1];break;
        case 2: P2=0x04;i++;P1=abuff[2];break;
        case 3: P2=0x08;i++;P1=abuff[3];break;
        case 4: P2=0x10;i++;P1=abuff[4];break;
        case 5: P2=0x20;i=0;P1=abuff[5];break;
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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