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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3158|回復: 5
收起左側

單片機秒表有點慢,這是什么情況?求解

[復制鏈接]
ID:443291 發表于 2018-12-19 20:56 | 顯示全部樓層 |閱讀模式
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit LCD_RS=P2^6;  
  5. sbit LCD_RW=P2^5;
  6. sbit LCD_E=P2^7;
  7. sbit k2=P3^0;

  8. long int count,count1;
  9. char mil,sec,min,mil1,sec1,min1;

  10. unsigned char code table[ ]="          miaobiao  ";
  11. unsigned char code table1[ ]="    00:00:0   ";

  12. void delay(uint z)
  13. {
  14.         uchar j,k;
  15.         for(j=z;j>0;j--)
  16.         for(k=256;k>0;k--);
  17. }
  18. void write_com(uchar com)
  19. {
  20.         LCD_RS=0;
  21.         LCD_E=0;
  22.         LCD_RW=0;
  23.         LCD_DATAPINS=com;
  24.         delay(5);
  25.         LCD_E=1;
  26.         delay(5);
  27.         LCD_E=0;
  28. }

  29. void write_date(uchar date)
  30. {
  31.         LCD_RS=1;
  32.         LCD_E=0;
  33.         LCD_RW=0;
  34.         LCD_DATAPINS=date;
  35.         delay(5);
  36.         LCD_E=1;
  37.         delay(5);
  38.         LCD_E=0;
  39. }

  40. void init()
  41. {
  42.         uchar num;
  43.         LCD_E=0;
  44.         write_com(0x38);
  45.         write_com(0x0c);
  46.         write_com(0x06);
  47.         write_com(0x01);
  48.         write_com(0x80);
  49.         for(num=0;num<20;num++)
  50.         {
  51.                 write_date(table[num]);
  52.                 delay(5);
  53.         }
  54.         write_com(0x80+0x40);
  55.         for(num=0;num<12;num++)
  56.         {
  57.                 write_date(table1[num]);
  58.                 delay(5);
  59.         }
  60.         TMOD=0x01;
  61.         TH0=(65536-50000)/256;
  62.         TL0=(65536-50000)%256;
  63.         EA=1;
  64.         ET0=1;
  65.         EX0=1;
  66.         TR0=0;
  67. }

  68. void write_min(uchar add,uchar date)
  69. {
  70.         uchar one,two;
  71.         one=date/10;
  72.         two=date%10;
  73.         write_com(0x80+0x40+add);
  74.         write_date(0x30+one);
  75.         write_date(0x30+two);
  76. }

  77. void write_sec(uchar add,uchar date)
  78. {
  79.         uchar three,four;
  80.         three=date/10;
  81.         four=date%10;
  82.         write_com(0x80+0x40+add);
  83.         write_date(0x30+three);
  84.         write_date(0x30+four);
  85. }

  86. void write_mil(uchar add,uchar date)
  87. {
  88.         uchar five;
  89.         five=date%10;
  90.         write_com(0x80+0x40+add);
  91.         write_date(0x30+five);
  92. }

  93. void zjs()
  94. {
  95.         if(count==2)
  96.         {
  97.         delay(5);
  98.                 count=0;
  99.                 mil++;
  100.                 if(mil==10)
  101.                 {
  102.                         delay(5);
  103.                         mil=0;
  104.                         sec++;
  105.                         if(sec==60)
  106.                         {
  107.                                 delay(5);
  108.                                 sec=0;
  109.                                 min++;
  110.                                 if(min==60)
  111.                                 {
  112.                                         delay(5);
  113.                                         min=0;
  114.                                         mil=0;         
  115.                                 }
  116.                         }
  117.                 }
  118.         write_min(4,min);
  119.         write_sec(7,sec);
  120.         write_mil(10,mil);                        
  121.         }
  122. }

  123. void main()
  124. {
  125.         init();
  126.         while(1)
  127.         {
  128.                 zjs();
  129.         }
  130. }

  131. void int0() interrupt 0  
  132. {
  133.         delay(10);
  134.         TR0=~TR0;
  135. }

  136. void timer0() interrupt 1
  137. {
  138.         count++;
  139. }
復制代碼


回復

使用道具 舉報

ID:213173 發表于 2018-12-19 21:59 | 顯示全部樓層
T0中斷程序中沒有重裝TH0、TL0初值,當然時間慢30%。
回復

使用道具 舉報

ID:393699 發表于 2018-12-19 22:02 | 顯示全部樓層
中斷里面不要放延時……,你既然開了定時器為何不用硬件計數來計時呢?為什么還要故意用循環延時呢?估計問題就是在這里,重新想想這個計時邏輯吧
回復

使用道具 舉報

ID:275479 發表于 2018-12-19 22:20 | 顯示全部樓層
定時器方式是   16位定時器/計數器
void int0() interrupt 0  
{
        delay(10);
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=~TR0;
}
回復

使用道具 舉報

ID:424598 發表于 2018-12-20 09:35 來自手機 | 顯示全部樓層
可參考我發的定時器代碼,點我的主題
回復

使用道具 舉報

ID:443291 發表于 2018-12-25 13:41 | 顯示全部樓層
謝謝大佬
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久国产视频 | 中文字幕一区二区三区精彩视频 | 免费黄色a视频 | 九九热免费视频在线观看 | 中文字幕乱码亚洲精品一区 | 成人免费看片 | 亚洲欧美精品久久 | 欧美精品99 | 在线观看免费av片 | 日韩中文欧美 | 久久精品国产一区二区电影 | 亚洲精品国产第一综合99久久 | 又黑又粗又长的欧美一区 | 亚洲成人免费视频 | 99久久中文字幕三级久久日本 | 午夜影院在线观看版 | 国产在线网站 | av夜夜操 | 国产1区在线 | 成年人在线播放 | 一级片在线观看 | 人干人人| 国产999精品久久久 日本视频一区二区三区 | 日韩一区二区在线视频 | 日韩精品视频中文字幕 | 亚洲综合成人网 | 天天看天天爽 | 欧美成人精品 | 美女福利视频一区 | 欧美日韩一区二区三区在线观看 | 日韩在线中文字幕 | 精品在线观看入口 | 男人视频网站 | 欧美一级高清片 | 99亚洲综合 | 成人免费视频网站在线看 | 亚洲一级av毛片 | 欧美在线视频不卡 | 丁香久久 | 国产精品久久久久久久久动漫 | 亚洲成人av|