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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神對以下單片機源代碼做出闡述,目前我還看不懂

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次(中獎概率 50%)
跳轉到指定樓層
樓主
ID:839900 發表于 2020-11-12 17:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /***************   writer:shopping.w   ******************/
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar Receive_Buffer[101];
  6. uchar Buf_Index = 0;
  7. uchar code DSY_CODE[]=
  8. {
  9.          0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00
  10. };

  11. void Delay(uint x)
  12. {
  13.          uchar i;
  14.         while(x--)
  15.         {
  16.                  for(i=0;i<120;i++);
  17.         }
  18. }

  19. void main()
  20. {
  21.          uchar i;
  22.         P0 = 0x00;
  23.         Receive_Buffer[0]=i;
  24.         SCON = 0x50;
  25.         TMOD = 0x20;
  26.         PCON = 0x00;
  27.         TH1  = 0xfd;
  28.         TL1  = 0xfd;
  29.         EA   = 1;
  30.         EX0  = 1;
  31.         IT0  = 1;
  32.         ES   = 1;
  33.         IP   = 0x01;
  34.         TR1  = 1;
  35.         while(1)
  36.         {
  37.                  for(i=0;i<100;i++)
  38.                 {
  39.                          if(Receive_Buffer[i]==-1)
  40.                                 break;
  41.                         P0 = DSY_CODE[Receive_Buffer[i]];
  42.                         Delay(200);
  43.                 }
  44.                 Delay(200);
  45.         }
  46. }

  47. void Serial_INT() interrupt 4
  48. {
  49.          uchar c;
  50.         if(RI==0)
  51.                 return;
  52.         ES = 0;
  53.         RI = 0;
  54.         c  = SBUF;
  55.         if(c>='0' && c<='9')
  56.         {
  57.                  Receive_Buffer[Buf_Index]=c-'0';
  58.                 Receive_Buffer[Buf_Index+1]=-1;
  59.                 Buf_Index = (Buf_Index+1)%100;        
  60.         }
  61.         ES = 1;
  62. }

  63. void EX_INT0() interrupt 0
  64. {
  65.          uchar *s = ("Receiving From 8051...\r\n");
  66.         uchar i = 0;
  67.         while(s[i]!='\0')
  68.         {
  69.                  SBUF = s[i];
  70.                 while(TI == 0);
  71.                 TI = 0;
  72.                 i++;
  73.         }
  74. }
復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:278840 發表于 2020-11-12 18:08 | 只看該作者
  1. /***************   writer:shopping.w   ******************/
  2. #include <reg52.h>//頭文件
  3. #define uint unsigned int//宏定義無符號整型變量
  4. #define uchar unsigned char//宏定義無符號字符型變量
  5. uchar Receive_Buffer[101];//定義一個接收緩存數組
  6. uchar Buf_Index = 0;//定義一個無符號字符型變量
  7. uchar code DSY_CODE[]=
  8. {
  9.          0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00
  10. };//共陰極數碼管編碼值

  11. void Delay(uint x)//延時函數
  12. {
  13.          uchar i;
  14.         while(x--)
  15.         {
  16.                  for(i=0;i<120;i++);
  17.         }
  18. }

  19. void main()//主函數
  20. {
  21.          uchar i;//定義一個無符號字符型變量
  22.         P0 = 0x00;//初始化P0口,賦值為0,輸出低電平
  23.         Receive_Buffer[0]=i;//初始化數組0的值
  24.         SCON = 0x50;//單片機寄存器設置
  25.         TMOD = 0x20;//
  26.         PCON = 0x00;//
  27.         TH1  = 0xfd;//計數器初始化高八位
  28.         TL1  = 0xfd;//低八位
  29.         EA   = 1;//開總中斷
  30.         EX0  = 1;//開外部中斷
  31.         IT0  = 1;//啟動定時器中斷
  32.         ES   = 1;//啟動外部中斷
  33.         IP   = 0x01;
  34.         TR1  = 1;//啟動定時器1
  35.         while(1)//循環
  36.         {
  37.                  for(i=0;i<100;i++)
  38.                 {
  39.                          if(Receive_Buffer[i]==-1)
  40.                                 break;
  41.                         P0 = DSY_CODE[Receive_Buffer[i]];
  42.                         Delay(200);
  43.                 }
  44.                 Delay(200);
  45.         }
  46. }

  47. void Serial_INT() interrupt 4
  48. {
  49.          uchar c;
  50.         if(RI==0)
  51.                 return;
  52.         ES = 0;
  53.         RI = 0;
  54.         c  = SBUF;
  55.         if(c>='0' && c<='9')
  56.         {
  57.                  Receive_Buffer[Buf_Index]=c-'0';
  58.                 Receive_Buffer[Buf_Index+1]=-1;
  59.                 Buf_Index = (Buf_Index+1)%100;        
  60.         }
  61.         ES = 1;
  62. }

  63. void EX_INT0() interrupt 0
  64. {
  65.          uchar *s = ("Receiving From 8051...\r\n");
  66.         uchar i = 0;
  67.         while(s[i]!='\0')
  68.         {
  69.                  SBUF = s[i];
  70.                 while(TI == 0);
  71.                 TI = 0;
  72.                 i++;
  73.         }
  74. }
復制代碼
回復

使用道具 舉報

板凳
ID:278840 發表于 2020-11-12 18:10 | 只看該作者

  1. void Serial_INT() interrupt 4//定時器1中斷服務函數
  2. {
  3.          uchar c;
  4.         if(RI==0)
  5.                 return;
  6.         ES = 0;
  7.         RI = 0;
  8.         c  = SBUF;
  9.         if(c>='0' && c<='9')
  10.         {
  11.                  Receive_Buffer[Buf_Index]=c-'0';
  12.                 Receive_Buffer[Buf_Index+1]=-1;
  13.                 Buf_Index = (Buf_Index+1)%100;        
  14.         }
  15.         ES = 1;
  16. }

  17. void EX_INT0() interrupt 0//外部中斷函數
  18. {
  19.          uchar *s = ("Receiving From 8051...\r\n");
  20.         uchar i = 0;
  21.         while(s[i]!='\0')
  22.         {
  23.                  SBUF = s[i];
  24.                 while(TI == 0);
  25.                 TI = 0;
  26.                 i++;
  27.         }
  28. }
復制代碼
回復

使用道具 舉報

地板
ID:235200 發表于 2020-11-12 18:14 | 只看該作者
該程序是接收串口發送來的100個數據,接收后在P0口的數碼管上顯示接收來的數據(數據只限0-9的數字)
回復

使用道具 舉報

5#
ID:313791 發表于 2020-11-12 18:18 | 只看該作者
就是從串口接受數據然后顯示出來,不難的!
回復

使用道具 舉報

6#
ID:687694 發表于 2020-11-12 18:29 | 只看該作者
此程序可用串口中斷接收串口發送來的數字0~9,并將數字保存在數組中,數組能保存最近100個數據,超過時從最早的數據開始依次替換。主程序會循環將收到數字按照查表法轉換成段碼輸出在P0口,如果數據總數不到100個則以當前數據尾數-1結束,并重啟循環顯示。此程序有外部中斷INT0,當外部中斷觸發則向串口發送“Receiving From 8051...\r\n”
回復

使用道具 舉報

7#
ID:842763 發表于 2020-11-12 21:04 | 只看該作者
就是從串口接受數據然后顯示出來,接收串口發送來的100個數據,接收后在P0口的數碼管上顯示接收來的數據
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表