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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機控制3開關,沒開關控制3led,分別按下循環點亮

[復制鏈接]
跳轉到指定樓層
樓主
ID:28752 發表于 2021-10-12 15:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
新手,先做個功能,3個按鍵,每個按鍵分別控制3個燈循環點亮,使用STC15F204EA,在網上找的程序片段拼的,但是編譯不過,好多錯誤,麻煩大神幫我看看,我到底錯在哪了,謝謝...
#include <STC15X.h>
sbit key1 = P3^7;//定義按鍵端口
sbit key2 = P3^6;//定義按鍵端口
sbit key3 = P3^5;//定義按鍵端口
sbit led1 = P1^7;//定義LED1端口
sbit led2 = P1^6;//定義LED1端口
sbit led3 = P1^5;//定義LED1端口
sbit led4 = P1^4;//定義LED1端口
sbit led5 = P1^3;//定義LED1端口
sbit led6 = P1^2;//定義LED1端口
sbit led7 = P1^1;//定義LED1端口
sbit led8 = P1^0;//定義LED1端口
sbit led9 = P2^7;//定義LED1端口
/******************delay**********************/
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j < 500; j++);
}

/******************按鍵識別***********************/
void readkey(void)
{
unsigned char i, j;
if(!key1) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //????
while(!key1); //??????
aa++;
aa %= 3; //n1 = 0~2
}
        if(!key2) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //????
while(!key2); //??????
bb++;
bb %= 3; //n2 = 0~2
}
if(!key3) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++); //????
while(!key3); //??????
cc++;
cc %= 3; //n3 = 0~2
}
}
}
/******************主函數***********************/
void main()
{
while(1)
{
switch(aa) {
case 0: led1 = 1;led2 = 0;led3 = 0; readkey();  //??
case 1: led1 = 0;led2 = 1;led3 = 0; readkey();  //??
case 2: led1 = 0;led2 = 0;led3 = 1; readkey();  //??
}
switch(bb) {
case 0: led4 = 1;led5 = 0;led6 = 0; readkey(); //??
case 1: led4 = 0;led5 = 1;led6 = 0; readkey(); //??
case 2: led4 = 0;led5 = 0;led6 = 1; readkey(); //??
}
switch(cc) {
case 0: led7 = 1;led8 = 0;led9 = 0; readkey(); //??
case 1: led7 = 0;led8 = 1;led9 = 0; readkey(); //??
case 2: led7 = 0;led8 = 0;led9 = 1; readkey(); //??
}
}
}


000.jpg (399.48 KB, 下載次數: 64)

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

使用道具 舉報

沙發
ID:831736 發表于 2021-10-12 17:58 | 只看該作者
47行多了一個括號,然后你的aa,bb,cc,沒有聲明,還有你的頭文件(#include<STC15X.h>)也有問題,我沒有用過這個單片機,不知道改加什么頭文件好。
回復

使用道具 舉報

板凳
ID:624769 發表于 2021-10-12 18:53 | 只看該作者
找不到頭文件,用不了P3, 所以錯誤一大堆。
STC15F204E 的頭文件, 和 STC15F104E 是通用的,和其他STC15系列略有不同,你要是找不到可以用這個。
STC15F104E.rar (1.87 KB, 下載次數: 5)

回復

使用道具 舉報

地板
ID:959346 發表于 2021-10-12 22:45 | 只看該作者
找不到你包含的頭文件,所以預定義的寄存器名稱也都會報錯。
回復

使用道具 舉報

5#
ID:161164 發表于 2021-10-13 00:15 | 只看該作者
switch內要加break;分開每個case
不加就會后面那幾個case都走一遍
回復

使用道具 舉報

6#
ID:28752 發表于 2021-10-13 09:45 | 只看該作者
謝謝各位大佬回復,反反復復的查...總算是能編譯過了...,以前一直在弄硬件...,看來...學習的路還很長...
回復

使用道具 舉報

7#
ID:28752 發表于 2021-10-13 09:46 | 只看該作者
188610329 發表于 2021-10-12 18:53
找不到頭文件,用不了P3, 所以錯誤一大堆。
STC15F204E 的頭文件, 和 STC15F104E 是通用的,和其他STC15 ...

是找不到頭文件,我換成c51的就好了
回復

使用道具 舉報

8#
ID:28752 發表于 2021-10-13 09:51 | 只看該作者
以下代碼能編譯過,各位大佬幫看看能不能實現功能,開發板在路上,3按鍵分別,控制3組12個led,按下開關,對應的LED順序點亮,再按下,關閉...
  1. #include "reg51.h"
  2. sbit key1 = P3^7;  //定義按鍵端口
  3. sbit key2 = P3^6;  //定義按鍵端口
  4. sbit key3 = P3^5;  //定義按鍵端口
  5. sbit led1 = P1^7;  //定義LED端口
  6. sbit led2 = P1^6;  //定義LED端口
  7. sbit led3 = P1^5;  //定義LED端口
  8. sbit led4 = P1^4;  //定義LED端口
  9. sbit led5 = P1^3;  //定義LED端口
  10. sbit led6 = P1^2;  //定義LED端口
  11. sbit led7 = P1^1;  //定義LED端口
  12. sbit led8 = P1^0;  //定義LED端口
  13. sbit led9 = P2^7;  //定義LED端口
  14. sbit led10 = P2^6; //定義LED端口
  15. sbit led11 = P2^5; //定義LED端口
  16. sbit led12 = P2^4; //定義LED端口
  17. unsigned char a, b, c;
  18. /******************delay**********************/
  19. void delay(unsigned char i)

  20. {
  21.    
  22. unsigned char m, n;
  23.    
  24. for (m = i; m>0; m--)
  25.    
  26. for (n = 125; n>0; n--);

  27. }
  28. /******************按鍵識別***********************/
  29. void readkey(void)
  30. {
  31. if(!key1) {
  32. delay(10);
  33. if(!key1) {
  34. while(!key1); //??????
  35. a++;
  36. a %= 2; //n = 0~1
  37. }
  38. }
  39. if(!key2) {
  40. delay(10);
  41. if(!key2) {
  42. while(!key2); //??????
  43. b++;
  44. b %= 2; //n = 0~3
  45. }
  46. }
  47. if(!key3) {
  48. delay(10);
  49. if(!key3) {
  50. while(!key3); //??????
  51. c++;
  52. c %= 2; //n = 0~3
  53. }
  54. }
  55. }
  56. /******************主函數***********************/
  57. void main()
  58. {
  59. while(1)
  60. {
  61. readkey();
  62. switch(a) {
  63. case 0: led1 = 1;delay(200);led2 = 1;delay(200);led3 = 1;delay(200);led4 = 1; break;
  64. case 1: led1 = 0;led2 = 1;led3 = 0;led4 = 0 ; break;   
  65. }
  66. switch(b) {
  67. case 0: led5 = 1;delay(200);led6 = 1;delay(200);led7 = 1;delay(200);led8 = 1;break;  
  68. case 1: led5 = 0;led6 = 0;led7 = 0;led8 = 0 ; break;   
  69. }
  70. switch(c) {
  71. case 0: led9 = 1;delay(200);led10 = 1;delay(200);led11 = 1;delay(200);led12 = 1;break;  
  72. case 1: led9 = 0;led10 = 1;led11 = 0;led12 = 0 ; break;   
  73. }
  74. }
  75. }
復制代碼


回復

使用道具 舉報

9#
ID:624769 發表于 2021-10-13 10:47 | 只看該作者
grb7906 發表于 2021-10-13 09:46
是找不到頭文件,我換成c51的就好了

STC15F204E最好不要用 C51頭文件,寄存器變化還是比較大的。很可能會出現,編譯通過,燒錄后確莫名其妙的功能不正常。
回復

使用道具 舉報

10#
ID:28752 發表于 2021-10-13 14:30 | 只看該作者
188610329 發表于 2021-10-13 10:47
STC15F204E最好不要用 C51頭文件,寄存器變化還是比較大的。很可能會出現,編譯通過,燒錄后確莫名其妙的 ...

明白,謝謝提醒...
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩a在线 | 91精品国产自产精品男人的天堂 | 成人免费在线 | 黄色国产 | 国产精品久久久久aaaa樱花 | 日本精品一区二区三区视频 | 日韩a| 午夜影院视频在线观看 | 免费高清av | 国产在线aa | 国产一区二区三区视频免费观看 | 激情视频网站 | 在线看91 | 国产免费va | 日韩不卡一区二区三区 | 成人片网址 | 日韩精品在线看 | 四虎永久免费地址 | 福利视频一区二区 | 激情 婷婷 | 欧美一区精品 | 九色在线观看 | 国产视频精品免费 | 国产精品一区二区不卡 | 日日夜精品视频 | 久久精品国产免费看久久精品 | 亚洲精品日韩在线 | jav成人av免费播放 | 999久久久国产精品 欧美成人h版在线观看 | 黑人巨大精品欧美一区二区一视频 | 久久久久久一区 | 日韩精品免费视频 | 欧美日韩中文国产一区发布 | 国产精品精品 | 国产国语精品 | av在线天堂网 | 亚洲精品视频免费 | 日韩免费 | 亚洲啊v在线 | 在线免费观看日本视频 | 国产精品久久一区二区三区 |