⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm.i

📁 avr单片机模拟pwm
💻 I
字号:
#line 1 "C:\DOCUME~1\Administrator\桌面\pwm\pwm.c"
#line 1 "C:/icc/include/stdio.h"


#line 1 "C:/icc/include/stdarg.h"


typedef char *va_list;




#line 9 "C:/icc/include/stdarg.h"

char *_va_start(void *, int);

#line 13 "C:/icc/include/stdarg.h"




#line 4 "C:/icc/include/stdio.h"
#line 1 "C:/icc/include/_const.h"




#line 10 "C:/icc/include/_const.h"







#line 5 "C:/icc/include/stdio.h"

int getchar(void);
int putchar(char);
int puts( char *);
int printf( char *, ...);
int vprintf( char *, va_list va);
int sprintf(char *, char *, ...);
int vsprintf(char *, char *, va_list va);

int scanf( char *, ...);
int vscanf( char *, va_list va);
int sscanf(char *, char *, ...);
int vsscanf(char *, char *, va_list va);






int cprintf(const char *, ...);
int csprintf(char *, const char *, ...);



#line 2 "C:\DOCUME~1\Administrator\桌面\pwm\pwm.c"
#line 1 "C:/icc/include/io8515v.h"




#line 7 "C:/icc/include/io8515v.h"


#line 10 "C:/icc/include/io8515v.h"






































































































































































































































































































































































#line 3 "C:\DOCUME~1\Administrator\桌面\pwm\pwm.c"
#line 1 "C:/icc/include/macros.h"






























#line 35 "C:/icc/include/macros.h"














void _StackCheck(void);
void _StackOverflowed(char);




#line 4 "C:\DOCUME~1\Administrator\桌面\pwm\pwm.c"




































































void InitPorts()
{
(*(volatile unsigned char *)0x3A)  = 0xFF;(*(volatile unsigned char *)0x3B) = 0xFF;

(*(volatile unsigned char *)0x37)  = 0x0F;(*(volatile unsigned char *)0x38) = 0xFF;

(*(volatile unsigned char *)0x34)  = 0x00;(*(volatile unsigned char *)0x35) = 0xFF;

(*(volatile unsigned char *)0x31)  = 0x3F;(*(volatile unsigned char *)0x32) = 0xF0;

 DDRE =  0x04;PORTE = 0x07;
}
void pwm_init(void)
{
(*(volatile unsigned char *)0x4F)=0x00;
(*(volatile unsigned char *)0x4E)=0x00;
(*(volatile unsigned char *)0x4E)|=(0<<WGM13)|(1<<WGM12);
(*(volatile unsigned char *)0x4F)|=(0<<WGM11)|(1<<WGM10);
(*(volatile unsigned char *)0x4F)|=(1<< 7)|(0<< 6);
(*(volatile unsigned char *)0x4F)|=(1<< 5)|(0<< 4);
(*(volatile unsigned char *)0x4E)|=(1<< 2)|(0<< 1)|(0<< 0);
(*(volatile unsigned int *)0x4C)=0;
(*(volatile unsigned int *)0x4A)=0;
(*(volatile unsigned int *)0x48)=0;
}

void motor_R(int speed)
{
  if(speed<0)
  {
((*(volatile unsigned char *)0x32)|=(1<< 0));
((*(volatile unsigned char *)0x32)&=~(1<< 1));
(*(volatile unsigned int *)0x4A)=(-1)*speed*255/100*speedrp/100;
  }
  else if(speed==0)
  {
((*(volatile unsigned char *)0x32)&=~(1<< 0));
((*(volatile unsigned char *)0x32)&=~(1<< 1));
(*(volatile unsigned int *)0x4A)=speed*255/100*speedrp/100;
  }
  else
  {
((*(volatile unsigned char *)0x32)|=(1<< 1));
((*(volatile unsigned char *)0x32)&=~(1<< 0));
(*(volatile unsigned int *)0x4A)=speed*255/100*speedrp/100;
  }
}

void motor_L(int speed)
{
  if(speed<0)
  {
((*(volatile unsigned char *)0x32)|=(1<< 2));
((*(volatile unsigned char *)0x32)&=~(1<< 3));
(*(volatile unsigned int *)0x48)=(-1)*speed*255/100*speedlp/100;
  }
  else if(speed==0)
  {
((*(volatile unsigned char *)0x32)&=~(1<< 2));
((*(volatile unsigned char *)0x32)&=~(1<< 3));
(*(volatile unsigned int *)0x48)=speed*255/100*speedlp/100;
  }
  else
  {
((*(volatile unsigned char *)0x32)|=(1<< 3));
((*(volatile unsigned char *)0x32)&=~(1<< 2));
(*(volatile unsigned int *)0x48)=speed*255/100*speedlp/100;
  }
}



void twds(void)
{
  if(s0==white&&s1==black){ motor_L(30);motor_R(70);}
  else if(s0==black&&s1==white){ motor_L(70);motor_R(30);}
  else { motor_L(70);motor_R(70);}
}

void bakwds(void)
{
  ;
}

void stop(void)
{
  motor_L(0);
  motor_R(0);
}

void towards(unsigned char n)
{
 unsigned int i=0;
 unsigned int j=0;
 unsigned char os2;
 while(n)
 {
  twds();
  if(os2==white && s2==white) i++;
  else i=0;
  if(os2==black && s2==black && j<=BW) j++;

  os2=s2;

  if(i>=WW && j>=BW)
  {
   n--;
   i=0;
   j=0;
  }

(*(volatile unsigned char *)0x35)=n;

  delay_us(10);
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -