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

標(biāo)題: 關(guān)于單片機定時器PWM信號仿真的問題,波形不出來 [打印本頁]

作者: 月碎蘭陵    時間: 2018-9-24 09:00
標(biāo)題: 關(guān)于單片機定時器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.   /************液晶驅(qū)動程序********************/
  11.   /************延時函數(shù)*/
  12.   void Delay(uint i)
  13.   {
  14.     while(i--);
  15.   }
  16.   /*寫指令函數(shù)*/
  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.   /*寫單個數(shù)據(jù)的函數(shù)*/
  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. /*寫入一串字符串函數(shù)*/
  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. /*初始化函數(shù)*/
  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. /************液晶驅(qū)動程序結(jié)束***********************/
  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. }
復(fù)制代碼

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


作者: cjm82    時間: 2018-9-24 10:31
中斷函數(shù)寫法有誤
應(yīng)寫為
void Timer0ISR(void) interrupt 1
{
    //你的代碼
}
作者: sxhwdz    時間: 2018-9-24 10:39
定時器中斷服務(wù)程序缺少中斷向量:
正確的應(yīng)該是:

void TIME0ISR(void) using 1  interrupt 1   

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





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1