单片机源程序如下:
- #include <reg51.h>
- //typedef unsigned char uint8;
- typedef unsigned int uint16;
- //typedef unsigned int u16; //对数据类型进行声明定义
- typedef unsigned char u8;
- //unsigned char timer6;
- //sbit IRIN=P3^2;
- //sbit IN1=P1^0;
- //sbit IN2=P1^1;
- //sbit ENA=P1^2;
- sbit pwm=P2^1;//输出PWM信号
- //sbit k1=P3^3;
- sbit led=P2^0;
- u8 a,b,c;
- void uart_init()
- {
- TMOD|=0x20;
- PCON =0x00;
- SCON = 0x50;
- TH1 = 0xFd; //设置波特率 9600
- TL1 = 0xFd;
- TR1 = 1; //启动定时器1
- ES = 1; //开串口中断
- EA = 1; //开总中断
- }
- void uart() interrupt 4
- {
- if(RI==1)
- RI=0;
- a=SBUF;
- }
- void InitTimer()
- {
- TMOD|=0x01;//开定时器0,1
- TH0=0xff;//定时1.5MS,这时舵机处于0度
- TL0=0xf6;
- EA=1;//开总断
- TR0=1;//开定时器0
- ET0=1;
- }
- void timer0() interrupt 1//定时器0中断函数
- {
- TH0=0xff;//定时1.5MS,这时舵机处于0度
- TL0=0xf6;
- b++;
- if(b==1) pwm=0;
- else if(b==2) pwm=1;
- else if(b==c) b=0;
- }
- void main()
- {
- InitTimer();
- uart_init();
- // while(1)
- {
- if(a==0x01)
- {
- c=28;
- led=1;
- } //左转 28 2
- else if(a==0x02)
- {
- c=62; //右转 62 2
- led=0;
- }
- else if(a==0x00) c=51; //中 51 2
-
- }
- }
复制代码
|