找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1537|回复: 0
打印 上一主题 下一主题
收起左侧

C语言程序为什么我的第二个if里的语句无法实现?只能产生一个pwm波

[复制链接]
跳转到指定楼层
楼主
ID:543151 发表于 2019-7-18 16:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5黑币
#include <reg51.h>
#include <intrins.h>
#include <delay.h>
// sbit  EN1=P3^0;
// sbit  IN1=P3^1;
sbit  IN2=P2^0;
  sbit   IN1=P2^1;
sfr  AUXR       =   0x8e;
#define FOSC    11059200L
#define BAUD    9600
#define uchar unsigned char
typedef unsigned char BYTE;
typedef unsigned int WORD;
unsigned char x,y;
uchar t=0;
void Timer0Init(void);
void InitADC();
BYTE GetADCResult(BYTE ch);
void ShowResult();
void Delay(WORD n);
uchar count=0;

sfr T2H   = 0xd6;               //???2?8?
sfr T2L   = 0xd7;               //???2?8?

sfr ADC_CONTR   =   0xBC;           //ADC?????
sfr ADC_RES     =   0xBD;           //ADC?8???
sfr ADC_LOW2    =   0xBE;           //ADC?2???
sfr P1ASF       =   0x9D;           //P1??2???????
#define ADC_POWER   0x80            //ADC?????
#define ADC_FLAG    0x10            //ADC????
#define ADC_START   0x08            //ADC?????
#define ADC_SPEEDLL 0x00            //540???
#define ADC_SPEEDL  0x20            //360???
#define ADC_SPEEDH  0x40            //180???
#define ADC_SPEEDHH 0x60
/*----------------------------
??ADC???PC
----------------------------*/
void ShowResult()
{
  x=GetADCResult(1);
// k=GetADCResult(7);
//    SendData(ADC_LOW2);           //???2???
}
/*----------------------------
??ADC??
----------------------------*/
BYTE GetADCResult(BYTE ch)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ch | ADC_START;
    _nop_();                        //??4?NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//??ADC????
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC
    return ADC_RES;                 //??ADC??
}
void InitADC()
{
    P1ASF = 0xff;                   //??P1??AD?
    ADC_RES = 0;                    //???????
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay(2);                       //ADC?????
}
void Delay(WORD n)
{
    WORD N;
    while (n--)
    {
        N = 5000;
        while (N--);
    }
}
void Timer0Init(void)  //100??@11.0592MHz
{
AUXR |= 0x80;  //?????1T??
TMOD &= 0xF0;  //???????
TL0 = 0xAE;  //??????
TH0 = 0xFB;  //??????
TF0 = 0;  //??TF0??
TR0 = 1;  //???0????
  EA=1;
}
void tiii () interrupt 1
{
count++;
if(count==t)
{
    IN2=~IN2;
  }
  if(count==200)
{
    IN2=~IN2;  
   count=0;
  }
}
void main()
{
InitADC();
Timer0Init();
while(1)
{
  x=GetADCResult(1);
P0=x;
  if(x>=200)
  {
   t=15;
   ET0=1;
  }
   else if(x<=50)
  {
   t=25;
   ET0=1;
   }
  else
  {
     ET0=0;
   }
}
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表