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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于郭天祥lesson4-2程序仿真的疑問

[復制鏈接]
跳轉到指定樓層
樓主
根據郭師傅的視頻一步步走下來的,最終代碼如下,郭師傅在視頻中用實驗板能實現此功能,但我用proteus仿真仿不出來,在線求助。再就是仿真出現圖二是什么原因。
單片機源程序如下:
  1. //實現的功能:第一位亮一,過一秒種后第二位亮二,再過一秒后第三位亮三,然后依次類推
  2. #include<reg52.h>
  3. #include<intrins.h>        //流水燈的循環移動
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar temp,aa,numdu,numwe;
  7. sbit dula=P2^6;//段選
  8. sbit wela=P2^7;//位選
  9. uchar code table[]={
  10. 0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71};
  14. uchar code tablewe[]={                //位的table
  15. 0xfe,0xfd,0xfb,
  16. 0xf7,0xef,0xdf};
  17. //{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  18. //void delay(uint z);        //使用定時器延時
  19. void main()
  20. {
  21.         numdu=0;
  22.         numwe=0;
  23.         aa=0;
  24.         TMOD=1;//0x01;確定T0T1的工作方式
  25.         TH0=(65536-50000)/256;//50毫秒產生一次中斷
  26.         TL0=(65536-50000)%256;
  27.         EA=1;//開總中斷
  28.         ET0=1;//開定時器0中斷
  29.         TR0=1;//啟動定時器
  30. /*定時/計數器初始化程序應完成如下工作:
  31. //對TMOD賦值,以確定T0和T1的工作方式。
  32. //計算初值,并將其寫入TH0、TL0或TH1、TL1.
  33. //中斷方式時,則對IE賦值,開放中斷。
  34. //使TR0或TR1置位,啟動定時/計數器定時或計數*/
  35.         while(1)
  36.         {
  37. //                delay(1000);//延時1000毫秒
  38. //                temp=_crol_(temp,1);
  39. //                P1=temp;   
  40.                 if(aa==10)//200毫秒
  41.                         {
  42.                                 aa=0;
  43.                                 numdu++;
  44.                                 if(numdu==7)
  45.                                         numdu=1;
  46.                                 dula=1;
  47.                                 P0=table[numdu];
  48.                                 dula=0;
  49.                                 wela=1;
  50.                                 P0=tablewe[numwe];
  51.                                 wela=0;
  52.                                 numwe++;
  53.                                 if(numwe==6)
  54.                                         numwe=0;
  55.                         }               
  56.         }                                 
  57. }

  58. //void delay(uint z)
  59. //{
  60. //        uint x,y;
  61. //        for(x=z;x>0;x--)
  62. //                for(y=110;y>0;y--);
  63. //}
  64. void timer0() interrupt 1
  65. /*51單片機中using使用在C51編程中,
  66. 用來在中斷函數中指定工作寄存器區,
  67. 工作寄存器共有4個區,分別代表R0~R7地址是:
  68. 第0工作區:00H~07H
  69. 第1工作區:08H~0FH
  70. 第2工作區:10H~17H
  71. 第3工作區:18H~1FH
  72. using n,那么n就是第幾區,使用方法如下:
  73. void exterint0() interrupt 0 using 1
  74. 這表示外部中斷0使用第1工作區地址。*/
  75. {
  76.         TH0=(65536-50000)/256;//5毫秒產生一次中斷
  77.         TL0=(65536-50000)%256;
  78.         aa++;
  79. //                if(aa==40)//2秒
  80. //                        {
  81. //                                 aa=0;
  82. //                                 num++;//num不需初始化,默認為0
  83. //                                 if(num==16)
  84. //                                         num=0;
  85. //                                 dula=1;
  86. //                                 P0=table[num];
  87. //                                 dula=0;
  88. //                        }               
  89. }
復制代碼





51黑論壇_TX-1C型實驗板.JPG (156.15 KB, 下載次數: 131)

1

1

1.JPG (108.39 KB, 下載次數: 121)

2

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

使用道具 舉報

沙發
ID:213173 發表于 2020-2-20 14:42 | 只看該作者
學習板上集成了很多功能,而且常有端口和接口復用,利用跳線帽切換電路。樓主想完整仿真一個復雜的學習板上所有功能幾乎是不可能成功。只能把某些功能的相關電路分離出來仿真才能成功。程序修改如下:


  1. //實現的功能:第一位亮一,過一秒種后第二位亮二,再過一秒后第三位亮三,然后依次類推
  2. #include<reg52.h>
  3. #include<intrins.h>        //流水燈的循環移動
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar temp,aa,numdu,numwe;
  7. sbit dula=P2^6;//段選
  8. sbit wela=P2^7;//位選
  9. uchar code table[]={
  10. 0x3f,0x06,0x5b,0x4f,
  11. 0x66,0x6d,0x7d,0x07,
  12. 0x7f,0x6f,0x77,0x7c,
  13. 0x39,0x5e,0x79,0x71};
  14. uchar code tablewe[]={                //位的table
  15. 0xfe,0xfd,0xfb,
  16. 0xf7,0xef,0xdf};
  17. //{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  18. void Timer0Init();
  19. void delay(uint z);        //使用定時器延時
  20. void main()
  21. {
  22.         numdu=0;
  23. //        numwe=0;
  24.         aa=0;
  25. //        TMOD=1;//0x01;確定T0T1的工作方式
  26. //        TH0=(65536-50000)/256;//50毫秒產生一次中斷
  27. //        TL0=(65536-50000)%256;
  28.         Timer0Init();
  29.         EA=1;//開總中斷
  30.         ET0=1;//開定時器0中斷
  31. //        TR0=1;//啟動定時器
  32.         /*定時/計數器初始化程序應完成如下工作:
  33.         //對TMOD賦值,以確定T0和T1的工作方式。
  34.         //計算初值,并將其寫入TH0、TL0或TH1、TL1.
  35.         //中斷方式時,則對IE賦值,開放中斷。
  36.         //使TR0或TR1置位,啟動定時/計數器定時或計數*/
  37.         while(1)
  38.         {
  39.                 if(aa>=20)//1秒
  40.                 {
  41.                         aa=0;
  42.                         numdu++;
  43.                         if(numdu>=6)
  44.                                 numdu=0;
  45.                 }
  46.                 P0=table[numdu+1];
  47.                 dula=1;
  48.                 dula=0;

  49.                 P0=tablewe[numdu];
  50.                 wela=1;
  51.                 wela=0;
  52. //                numwe++;
  53. //                if(numwe==6)
  54. //                        numwe=0;               
  55.                 delay(2);
  56.         }                                 
  57. }

  58. void Timer0Init()        //50毫秒@11.0592MHz
  59. {
  60.         TMOD= 0x01;                //設置定時器模式
  61.         TL0 = 0x00;                //設置定時初值
  62.         TH0 = 0x4C;                //設置定時初值
  63.         TF0 = 0;                //清除TF0標志
  64.         TR0 = 1;                //定時器0開始計時
  65. }

  66. void delay(uint z)
  67. {
  68.         uint x,y;
  69.         for(x=z;x>0;x--)
  70.                 for(y=110;y>0;y--);
  71. }

  72. void timer0() interrupt 1
  73. /*51單片機中using使用在C51編程中,
  74. 用來在中斷函數中指定工作寄存器區,
  75. 工作寄存器共有4個區,分別代表R0~R7地址是:
  76. 第0工作區:00H~07H
  77. 第1工作區:08H~0FH
  78. 第2工作區:10H~17H
  79. 第3工作區:18H~1FH
  80. using n,那么n就是第幾區,使用方法如下:
  81. void exterint0() interrupt 0 using 1
  82. 這表示外部中斷0使用第1工作區地址。*/
  83. {
  84.         TH0=(65536-50000)/256;//50毫秒產生一次中斷
  85.         TL0=(65536-50000)%256;
  86.         aa++;
  87. //  if(aa==40)//2秒
  88. //  {
  89. //     aa=0;
  90. //     num++;//num不需初始化,默認為0
  91. //     if(num==16)
  92. //       num=0;
  93. //     dula=1;
  94. //     P0=table[num];
  95. //     dula=0;
  96. //  }               
  97. }
復制代碼



回復

使用道具 舉報

板凳
ID:666011 發表于 2020-3-17 23:13 | 只看該作者
wulin 發表于 2020-2-20 14:42
學習板上集成了很多功能,而且常有端口和接口復用,利用跳線帽切換電路。樓主想完整仿真一個復雜的學習板上 ...

謝謝啦!長知識了!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 毛片一级片| 久久久久久免费毛片精品 | 天天久久 | 日本一区二区影视 | 超碰在线人 | 免费午夜电影 | h片在线播放 | 精品成人免费一区二区在线播放 | k8久久久一区二区三区 | 中文字幕一区二区三区精彩视频 | 中文字幕欧美一区二区 | 免费的色网站 | 一级全黄视频 | 成人福利在线视频 | 欧美1区 | 亚洲精品女人久久久 | 国产 欧美 日韩 一区 | 91福利在线观看 | 国产1区2区在线观看 | 欧美成人h版在线观看 | www.黄色网| 成人亚洲一区 | 综合一区二区三区 | 国产精品久久av | 一起操网站 | 天堂av中文在线 | 婷婷不卡| 在线一区二区三区 | 成人午夜在线 | 午夜免费在线观看 | 久久久久国产精品一区 | 激情视频一区 | 精品视频一区二区三区 | 99精品国产在热久久 | 天堂在线www | 91精品中文字幕一区二区三区 | 免费看av大片| 日韩中文字幕 | 中文字幕在线剧情 | 狠狠色综合网站久久久久久久 | 亚洲精品大全 |