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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機實驗,IO口的使用,P3.3輸入,P1口輸出

[復制鏈接]
回帖獎勵 150 黑幣 回復本帖可獲得 50 黑幣獎勵! 每人限 2 次
ID:722868 發(fā)表于 2020-5-8 00:22 | 顯示全部樓層 |閱讀模式
本帖最后由 水各 于 2020-5-8 00:27 編輯

實驗要求如下:P3.3口做輸入口,外接一脈沖,每輸入一個脈沖,P1口按16進制加一方式點亮發(fā)光二極管。P3口接的是一個開關。
電路圖流程圖如下

20170514223329865.png 20170514223323166.png
本菜鳥不太理解這題,寫的C語言程序問題很大。
希望有大神能指點一下
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. sbit key=P3^3;
  4. uchar code seg[]=
  5. {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
  6. void delayms(uchar ms)
  7. {
  8. uchar i;
  9. while(ms--)
  10. for(i=0;i<123;i++);
  11. }
  12. uchar key_scan(void)
  13. {
  14. static bit kp=0;
  15. if((P3&0x0f)!=0x0f)
  16. {
  17. delayms(10);
  18. if(((P3&0x0f)!=0x0f)&&(kp==0))
  19. {
  20. kp=1;
  21. return 1;
  22. }
  23. }
  24. else kp=0;
  25. return 0;
  26. }
  27. void main(void)
  28. {
  29. uchar key_val;
  30. uchar num=0;
  31. while(1)
  32. {
  33. key_val=key_scan();
  34. if(key_val==1)
  35. {
  36. if(++num==16)
  37. num=0;
  38. }
  39. P2=seg[num];
  40. }
  41. }
復制代碼




回復

使用道具 舉報

ID:282850 發(fā)表于 2020-5-8 01:17 | 顯示全部樓層
指點一下?一下在哪里?是MCU不懂?還是74LS345不懂?還是C的每個語句都不懂?還是某句不懂?點亮一個LED做過嗎?
回復

使用道具 舉報

ID:746607 發(fā)表于 2020-5-8 09:32 | 顯示全部樓層
這是學校考試題吧,, seg[]數(shù)組下標值的范圍是0~14,你把36行的if(++num==16)改成if(++num==15) 就運行正常了。還有個辦法是在seg[]數(shù)組里在首數(shù)據(jù)的位置再添個0x00也行
回復

使用道具 舉報

ID:746607 發(fā)表于 2020-5-8 09:34 | 顯示全部樓層
這是學校考試題吧,, seg[]數(shù)組下標值的范圍是0~14,你把36行的if(++num==16)改成if(++num==15) 就運行正常了。還有個辦法是在seg[]數(shù)組里在首數(shù)據(jù)的位置再添個0x00也行.
最好的辦法是把uchar code seg[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
改為
uchar code seg[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
回復

使用道具 舉報

ID:722868 發(fā)表于 2020-5-8 10:22 | 顯示全部樓層
f556 發(fā)表于 2020-5-8 01:17
指點一下?一下在哪里?是MCU不懂?還是74LS345不懂?還是C的每個語句都不懂?還是某句不懂?點亮一個LED做 ...

點亮一個LED是做過的。
就是這一題根據(jù)師傅的講解,是要根據(jù)P3.3的中斷特性來判斷開關撥動的次數(shù),然后開關撥動一個來回,LED燈根據(jù)16進制加一(16進制比較困難也可以用2進制)。我主要不懂的地方時,這個判斷撥動次數(shù)的程序怎樣寫
回復

使用道具 舉報

ID:213173 發(fā)表于 2020-5-8 10:58 | 顯示全部樓層
用P1的8個LED顯示0x00~0xff

#include<reg51.h>
#define uchar unsigned char
sbit key=P3^3;

void delayms(uchar ms)
{
        uchar i;
        while(ms--)
        for(i=0;i<123;i++);
}

bit key_scan(void)
{
        static bit kp=0;
        if((P3&0x0f)!=0x0f)
        {
                delayms(10);
                if(((P3&0x0f)!=0x0f)&&(kp==0))
                {
                        kp=1;
                        return 1;
                }
        }
        else kp=0;
        return 0;
}

void main(void)
{
        uchar num=0;
        P1=0x00;
        while(1)
        {
                if(key_scan())
                        num++;
                P1=num;//0x00~0xff
        }
}
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品免费 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 91九色视频 | 国产精品欧美一区二区三区不卡 | 国产精品嫩草影院精东 | 日韩www| av高清| 欧美xxxx黑人又粗又长 | 久久精品亚洲精品国产欧美 | 欧美在线视频不卡 | 精品免费| 免费在线国产视频 | 久草网站| 日韩精品在线一区 | 在线日韩精品视频 | 日本a在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产精品久久久久国产a级 欧美日韩国产免费 | 欧美日韩在线一区二区三区 | 91精品一区二区三区久久久久久 | 毛片网站在线观看 | 九九热在线视频免费观看 | 亚洲一区毛片 | 嫩草91在线| 日韩成年人视频在线 | 亚洲一区二区av | 毛片在线免费 | 理论片免费在线观看 | 亚洲韩国精品 | 精品成人在线观看 | 精品视频在线观看 | 高清色| 国产一级在线观看 | 欧美精品1区2区3区 精品国产欧美一区二区 | 91av在线免费播放 | 日韩成人免费视频 | 日韩精品一区二区三区中文在线 | 久久久精品网 | 日韩欧美视频在线 | 狠狠干狠狠操 | 人人看人人爽 |