|
用定时器0产生脉冲。
程序如下:
- #include "main.h"
- #include "delay.h"
- #include "key.h"
- #include "12864Serial.h"
- uint count=0;
- u8 circle=0;
- u8 cou=0,num=0;
- bit flag=0;
- u16 Table[4]={0x00};
- uchar code disA[]= {" 试 验 "};
- uchar code disB[]= {"脉冲 /圈"};
- uchar code disC[]= {"转"};
- void Timer0Init(void) //100u秒@11.0592MHz
- {
- // AUXR &= 0x7F; //定时器时钟12T模式
- // TMOD &= 0xF0; //设置定时器模式
- TMOD |= 0x01; //设置定时器模式
- TL0 = 0xA4; //设置定时初值
- TH0 = 0xFF; //设置定时初值
- EA=1;
- ET0=1;
- // TR0 = 1; //定时器0开始计时
- }
- void display()
- {
- Lcd_SetPos(1,3);
- LCD_WriteDat(':');
- Table[0]=(circle%1000/100+0x30);
- Table[1]=(circle%100/10+0x30);
- Table[2]=(circle%10+0x30);
- LCD_WriteDat(Table[0]);
- LCD_WriteDat(Table[1]);
- LCD_WriteDat(Table[2]);
-
- }
- int main()
- {
- u8 key,j,key_num=0;
- Timer0Init();
- LCD_Init();
- // delay_ms(10);
- for(j=1;j>0;j--)
- {
- Lcd_DispLine(0,0,disA);
- Lcd_DispLine(1,1,disB);
- Lcd_DispLine(2,2,disC);
- }
- display();
- while(1)
- {
-
- key=key_Scan(0);
- if(key==key_mcu)
- {delay_ms(15);
- key_num++;
-
- }
- if(key_num==2)key_num=0;
- if((key==key_up)&&(key_num==1))
- {
- delay_ms(25);
- circle+=1;
- }
- if((key==key_down)&&(key_num==1))
- {
- delay_ms(25);
- circle-=1;
- }
- display();
- if((key==key_en)&&(key_num==0)&&(flag==0))
- {
- TR0=1;flag=~flag;
-
- }
- else if((key==key_en)&&(key_num==0)&&(flag==1)) {TR0=0;flag=~flag;}
-
-
-
- if(cou==circle)
- {
- cou=0;CW=0;num++;Lcd_DispLine(2,1,"顺");
- }
- if(num ==2)num=0;
- if(num==1)
- {
- CW=1;Lcd_DispLine(2,1,"逆");
- }
- display();
- }
- }
- void Timer0() interrupt 1//100u秒@11.0592MHz
- {
- uint i;
- TL0 = 0xA4; //设置定时初值
- TH0 = 0xFF; //设置定时初值
-
- i++;
- if(i==15)
- {
- led=0;
- i=0;
- CLK=~CLK;
- count++;
-
- }
- if(count==400){count=0;cou++;}
- }
复制代码
|
-
-
步进电机.rar
46.42 KB, 下载次数: 14, 下载积分: 黑币 -5
|