單片機源程序如下:
- #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
-
- }
- }
復制代碼
|