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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于單片機定時器PWM信號仿真的問題,波形不出來

[復制鏈接]
跳轉到指定樓層
樓主
求大神幫忙

1.程序:(圖下面)

2.仿真電路


仿真:


單片機源程序:
  1. #include"reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar COUNT100,PWMCOUNT;
  5. sbit RS=P3^7;
  6. sbit RW=P3^6;
  7. sbit E=P3^5;
  8. sbit PWM=P1^0;
  9. sfr LCDData=0x80;
  10.   /************液晶驅動程序********************/
  11.   /************延時函數*/
  12.   void Delay(uint i)
  13.   {
  14.     while(i--);
  15.   }
  16.   /*寫指令函數*/
  17.   void Write_Instruction(uchar x)
  18.   {
  19.    Delay(1000);
  20.    E=0;
  21.    RW=0;
  22.    RS=0;
  23.    LCDData=x;
  24.    E=1;
  25.    Delay(20);
  26.    E=0;
  27.    }
  28.   /*寫單個數據的函數*/
  29.   void Write_Data(uchar x)
  30.   {
  31.    Delay(1000);
  32.    E=0;
  33.    RW=0;
  34.    RS=1;
  35.    E=1;
  36.    LCDData=x;

  37. E=0;
  38. }
  39. /*寫入一串字符串函數*/
  40. void Write_String(uchar x,uchar *p)
  41. { Write_Instruction(x);
  42.   while(*p!=0x00)
  43. {Write_Data(*p);
  44.   p++;
  45.   if (x++==0x8f)
  46.   {Write_Instruction(0xc0);}
  47. }
  48. }
  49. /*初始化函數*/
  50. void InitLCD(void)
  51. {Write_Instruction(0x38);
  52. Delay(200);
  53. Write_Instruction(0x0e);
  54. Delay(200);
  55. Write_Instruction(0x06);
  56. Delay(200);
  57. }

  58. /************液晶驅動程序結束***********************/
  59. void DISPPWM(uchar addr,uchar p)
  60. {
  61. Write_Instruction(addr);
  62. Write_Data(p/100+0x30);
  63. Write_Data(p%100/10+0x30);
  64. Write_Data(p%100%10+0x30);
  65. Write_Data('%');
  66. }
  67. void main(void)
  68. {
  69. InitLCD();
  70. Delay(0xffff);
  71. COUNT100=0;
  72. PWMCOUNT=50;
  73. Write_String(0x80,"PWM=");
  74. DISPPWM(0x84,PWMCOUNT);
  75. TMOD=0x01;
  76. EA=1;
  77. ET0=1;
  78. TL0=0x66;
  79. TH0=0xfc;
  80. TR0=1;
  81. while(1);
  82. }
  83. void TIME0ISR(void) using 1
  84. {
  85. TL0=0x66;
  86. TH0=0xfc;
  87. COUNT100++;
  88. if(COUNT100==100)
  89.   {
  90.   COUNT100=0;
  91.   }
  92.   if(COUNT100<PWMCOUNT)
  93.   {
  94.   PWM=1;
  95.   }
  96.   else
  97.   {
  98.   PWM=0;
  99.   }
  100. }
復制代碼

仿真波形一直是一條直線,求大神指點迷津,不勝感激

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

使用道具 舉報

沙發
ID:388197 發表于 2018-9-24 10:31 | 只看該作者
中斷函數寫法有誤
應寫為
void Timer0ISR(void) interrupt 1
{
    //你的代碼
}

評分

參與人數 2黑幣 +50 收起 理由
admin + 20 回帖助人的獎勵!
月碎蘭陵 + 30 很給力!

查看全部評分

回復

使用道具 舉報

板凳
ID:387733 發表于 2018-9-24 10:39 | 只看該作者
定時器中斷服務程序缺少中斷向量:
正確的應該是:

void TIME0ISR(void) using 1  interrupt 1   

using 1 是指這個中斷函數使用單片機內存中四組工作寄存器中的哪一組, 可以不要

評分

參與人數 1黑幣 +30 收起 理由
月碎蘭陵 + 30 很給力!

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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