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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

如果把單片機鍵盤掃描程序等寫成子函數(shù)在主函數(shù)里調用就會報錯

[復制鏈接]
跳轉到指定樓層
樓主
ID:586669 發(fā)表于 2019-7-19 08:51 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
  2. #include "lcd.h"


  3. typedef unsigned int u16;          //對數(shù)據(jù)類型進行聲明定義
  4. typedef unsigned char u8;
  5. sbit led0=P2^2;
  6. sbit buzzer=P2^3;
  7. sbit clear=P2^4;
  8. u16 Cnt=0;
  9. u16 sec=0;
  10. u16 min=0;
  11. u16 hour=0;               //聲明位選線選通端
  12. u8 key;
  13. u8 No[]="Patient Calling";//13
  14. u8 Str1[]="No.:";//6
  15. u8 Str2[]=":  :";
  16. /*******************************************************************************
  17. * 函 數(shù) 名         : main
  18. * 函數(shù)功能                   : 主函數(shù)
  19. * 輸    入         : 無
  20. * 輸    出         : 無
  21. *******************************************************************************/
  22. void delay(uint xms)
  23. {
  24.     uint x,y;
  25.     for(x=xms;x>0;x--)
  26.         for(y=11;y>0;y--);
  27. }

  28. void main()
  29. {
  30.         u8 i;
  31.         LcdInit();
  32.         TMOD=0x01;
  33.         TCON=0x10;
  34.         IE=0x82;
  35.         TH0=(65536-50000)/256;
  36.         TL0=(65536-50000)%256;
  37.         LcdWriteCom(0x80+0x40+0x09);
  38.         for(i=0;i<4;i++)
  39.         {
  40.                 LcdWriteData(Str1[i]);        
  41.         }
  42.                 LcdWriteCom(0x800+0x40+2);
  43.         for(i=0;i<4;i++)
  44.         {
  45.                 LcdWriteData(Str2[i]);        
  46.         }
  47.                 LcdWriteCom(0x80+0x01);
  48.         for(i=0;i<17;i++)
  49.         {
  50.                 LcdWriteData(No[i]);        
  51.         }

  52.         while(1)
  53.         {         uint temp;
  54.                
  55.             LcdWriteCom(0x80+0x40);
  56.                 LcdWriteData(hour/10+0x30);
  57.                 LcdWriteData(hour%10+0x30);
  58.                  LcdWriteCom(0x80+0x40+3);
  59.                 LcdWriteData(min/10+0x30);
  60.                 LcdWriteData(min%10+0x30);
  61.                  LcdWriteCom(0x80+0x40+6);
  62.                 LcdWriteData(sec/10+0x30);
  63.                 LcdWriteData(sec%10+0x30);
  64.     P1=0xf7;                             //給P1口賦值
  65.     temp=P1;
  66.     temp=temp&0xf0;
  67.     if(temp!=0xf0)                       //檢測是否有鍵按下
  68.     {
  69.         delay(6);                       //延時去抖
  70.         temp=P1;
  71.         temp=temp&0xf0;
  72.         if(temp!=0xf0)                   //再次檢測是否有鍵按下
  73.         {
  74.             temp=P1;
  75.             switch(temp)
  76.             {
  77.                 case 0x77:
  78.                     key=1;
  79.                     break;
  80.                 case 0xb7:
  81.                     key=2;
  82.                     break;
  83.                 case 0xd7:
  84.                     key=3;
  85.                     break;
  86.                 case 0xe7:
  87.                     key=4;
  88.                     break;              //判斷按下的是哪個鍵
  89.             }
  90.             while(temp!=0xf0)
  91.             {
  92.                 temp=P1;
  93.                 temp=temp&0xf0;        
  94.             }                           //等待按鍵釋放
  95.         }
  96.     }
  97.     P1=0xfb;
  98.     temp=P1;
  99.     temp=temp&0xf0;
  100.     if(temp!=0xf0)
  101.     {
  102.         delay(6);
  103.         temp=P1;
  104.         temp=temp&0xf0;
  105.         if(temp!=0xf0)
  106.         {
  107.             temp=P1;
  108.             switch(temp)
  109.             {
  110.                 case 0x7b:
  111.                     key=5;
  112.                     break;
  113.                 case 0xbb:
  114.                     key=6;
  115.                     break;
  116.                 case 0xdb:
  117.                     key=7;
  118.                     break;
  119.                 case 0xeb:
  120.                     key=8;
  121.                     break;
  122.             }
  123.             while(temp!=0xf0)
  124.             {
  125.                 temp=P1;
  126.                 temp=temp&0xf0;
  127.             }
  128.         }
  129.     }
  130.     P1=0xfd;
  131.     temp=P1;
  132.     temp=temp&0xf0;
  133.     if(temp!=0xf0)
  134.     {
  135.         delay(6);
  136.         temp=P1;
  137.         temp=temp&0xf0;
  138.         if(temp!=0xf0)
  139.         {
  140.             temp=P1;
  141.             switch(temp)
  142.             {
  143.                 case 0x7d:
  144.                     key=9;
  145.                     break;
  146.                 case 0xbd:
  147.                     key=10;
  148.                     break;
  149.                case 0xdd:
  150.                     key=11;
  151.                     break;
  152.                 case 0xed:
  153.                     key=12;
  154.                     break;
  155.             }
  156.             while(temp!=0xf0)
  157.             {
  158.                 temp=P1;
  159.                 temp=temp&0xf0;
  160.             }
  161.         }
  162.     }
  163.     P1=0xfe;
  164.     temp=P1;
  165.     temp=temp&0xf0;
  166.     if(temp!=0xf0)
  167.     {
  168.         delay(6);
  169.         temp=P1;
  170.         temp=temp&0xf0;
  171.         if(temp!=0xf0)
  172.         {
  173.             temp=P1;
  174.             switch(temp)
  175.             {
  176.                 case 0x7e:
  177.                     key=13;
  178.                     break;
  179.                 case 0xbe:
  180.                     key=14;
  181.                     break;
  182.                 case 0xde:
  183.                     key=15;
  184.                     break;
  185.                 case 0xee:
  186.                     key=16;
  187.                     break;
  188.             }
  189.             while(temp!=0xf0)
  190.             {
  191.                 temp=P1;
  192.                 temp=temp&0xf0;
  193.             }
  194.         }
  195.     }
  196.                 if(clear==0)
  197. {
  198.          delay(100);
  199.         if(clear==0)
  200.         {
  201.         key=0;
  202.         LcdWriteCom(0x80+0x40+14);
  203.         LcdWriteData(key/10+0x30);
  204.         LcdWriteData(key%10+0x30);
  205.         }
  206. }                                       
  207.                 if(key!=0)
  208.                 {
  209.                 LcdWriteCom(0x80+0x40+14);
  210.                 LcdWriteData(key/10+0x30);
  211.                 LcdWriteData(key%10+0x30);
  212.                 buzzer=~buzzer;
  213.                 led0=~led0;
  214.                 delay(500);
  215.                 }
  216.                
  217.         }

  218. }
  219. void ISR_Timer0() interrupt 1
  220. {
  221.     TH0=(65536-50000)/256;
  222.         TL0=(65536-50000)%256;
  223.         Cnt++;
  224.         if(Cnt==20)
  225.         {
  226.                 sec++;
  227.                 Cnt=0;
  228.         }
  229.         if(sec==59)
  230.         {
  231.                 min++;
  232.                 sec=0;
  233.         }
  234.         if(sec==59)
  235.         {
  236.                 min++;
  237.                 sec=0;
  238.         }
  239.         if(min==59)
  240.         {
  241.                 hour++;
  242.                 min=0;
  243.         }
  244.         if(hour==23)
  245.         {
  246.                 hour=0;
  247.         }
  248.         
  249. }
復制代碼

如果把鍵盤掃描程序等寫成子函數(shù)在主函數(shù)里調用就會報錯,這是咋回事大佬給看看

病床呼叫7 LCD1602顯示.zip

91.51 KB, 下載次數(shù): 6

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

使用道具 舉報

沙發(fā)
ID:377268 發(fā)表于 2019-7-21 09:20 | 只看該作者
錯誤提示寫的是什么,是否忘記聲明函數(shù)或者是用了主函數(shù)文件里的變量而沒有進行外部聲明
回復

使用道具 舉報

板凳
ID:213173 發(fā)表于 2019-7-22 13:17 | 只看該作者
在你的程序基礎上修改了構架,另設按鍵掃描子函數(shù)并增加調時功能,希望對你有所幫助。
液晶顯示+仿真.zip (86.53 KB, 下載次數(shù): 6)



回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美xxxx在线 | 欧美日韩一区二区三区视频 | 91中文在线观看 | 1区2区视频 | 欧美二区在线 | 国产高清精品一区二区三区 | 精品视频在线一区 | 男人天堂视频在线观看 | 中文字幕欧美一区 | 欧美 日韩 国产 成人 在线 91 | 99视频免费在线 | 欧美一级网站 | 日韩视频免费在线 | 国产资源在线视频 | 久久久做 | 欧美精品综合 | 免费观看黄网站 | 日本久久网 | 一区二区av | 视频在线亚洲 | 超碰人人在线 | 日韩欧美三级 | av电影手机版 | 99久久精品免费看国产免费软件 | 日韩色在线 | 久久99国产精品久久99果冻传媒 | 91亚洲精品在线观看 | 日韩在线视频一区 | 精品久久久久久久久久久 | 精产国产伦理一二三区 | 欧美一区二区免费 | 精品国产不卡一区二区三区 | 欧美高清视频一区 | 成人免费观看男女羞羞视频 | 久久不卡 | 国产精品视频一区二区三区 | 日韩在线一区二区 | 精品乱码一区二区三四区 | 亚洲视频免费观看 | 成人国产精品久久久 | 最新免费av网站 |