給你改了,你試試。
- #include<reg51.h>
- #include<intrins.h>
- unsigned char i,j,Temp;
- bit flag=0;
- void UART_SER(void)
- {
- switch(Temp)
- {
- case 0x55:j=_cror_(j, 1);P1=j;break;//右移
- case 0xAA:j=_crol_(j, 1);P1=j;break;//左移
- case 0x01:P1=j;break; //停止移動
- default:P1=0xff;break; //關閉
- }
- }
- void time0_SER(void) interrupt 1 using 2
- {
- TH0=0x3C;
- TL0=0xB0;
- i++;
- if(i>=10)//0.5s
- {
- i=0;
- flag=1;
- }
- }
- void main(void)
- {
- TMOD=0x21;//定時器0方式1,定時器方式2(8位重載)
- TH0=0x3C; //50ms
- TL0=0xB0; //50ms
- TH1=0xfd;//定時器1重載 波特率9600
- TL1=0xfd;//定時器1重載
- TR0=1; //開定時器0
- TR1=1; //開定時器1
- REN=1; //允許串行接收
- SM0=0; //設置串口方式1
- SM1=1; //設置串口方式1
- EA =1; //開總中斷
- ET0=1; //開T0中斷
- j=0xfe;
- while(1)
- {
- if(RI) //查詢接收中斷請求標志位為1(已收到)
- {
- RI=0; //接收中斷請求標志位清0
- Temp=SBUF; //獲取接收寄存器數據
- }
- if(flag) //0.5s定時標志1
- {
- flag=0;
- UART_SER();
- }
- }
- }
復制代碼 |