|
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar buf;
- char code zh[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //--1# 此部分為步進(jìn)電機(jī)控制部分
- void delay(char x)//延時(shí)程序
- {
- char i;
- while(x--)
- {
- for(i=0; i<120; i++);
- }
- }
- void motor(unsigned int a)//a即想要轉(zhuǎn)的圈數(shù)
- {
- unsigned char b;
- unsigned int c;
- for (c=0; c<8*64*a; c++)
- {
- for (b=0; b<8; b++)
- {
- P1 = zh[b];
- delay(1);
- }
- }
- }//--1# 此部分為步進(jìn)電機(jī)控制部分
- void main(void)
- {
- SCON=0x50;//設(shè)定串口工作方式0101 0000 串行口控制寄存器SCON 詳細(xì)注釋后面
- PCON=0x00; //=PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專(zhuān)用寄存器,在51單片機(jī)中單元地址是87H,其結(jié)構(gòu)格式如下:
- TMOD=0x20; //> 20=10100 //TMOD是定時(shí)器/計(jì)數(shù)器模式控制寄存器(TIMER/COUNTER MODE CONTROL REGISTER)。
- EA=1; //=EA引腳表示存取外部程序代碼之意,低電平動(dòng)作,當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部EPROM中)來(lái)執(zhí)行程序。EA引腳必須接低電平,因?yàn)槠鋬?nèi)部無(wú)程序存儲(chǔ)器空間。
- ES=1; //= ES:串行口中斷控制位。ES=1,允許串行口中斷。
- TL1=0xfd; //=fd=11111101 為什么51單片機(jī)串行中斷中TL1和TH1的值要相同
- TH1=0xfd; //= fd=11111101
- TR1=1; //= TH1,TL1、TR1、TMOD是單片機(jī)的特殊寄存器 ,是用來(lái)控制計(jì)數(shù)/中斷器的.TMOD(工作方式控制寄存器);TH1/TL1是定時(shí)器/計(jì)數(shù)器1;TR1=1是啟動(dòng)定時(shí)器1。
- while(1);
- }
- //串行中斷服務(wù)函數(shù)
- void serial() interrupt 4 //== interrupt翻譯:打斷
- {
- ES=0;
- RI=0;
- buf=SBUF; //= SBUF全稱(chēng)serial data buffer,中文名稱(chēng)“串行數(shù)據(jù)緩沖器”
- //**********************************************************************************
- //2#-段內(nèi)容 =正確運(yùn)行 等待串口助手"文本輸入數(shù)字后點(diǎn)亮燈光
- //if(buf<50)//35=3 可以輸入0 1點(diǎn)亮LED燈
- // P1=0X01;
- //***********************************************************************************
- if(buf<100)//------------------1#--步進(jìn)電機(jī)控制
- { delay(1000); //不知道什么問(wèn)題加載電機(jī)就運(yùn)轉(zhuǎn),不是等待輸入數(shù)字轉(zhuǎn)多少圈,
- motor(buf); //轉(zhuǎn)n圈(可以改動(dòng))
- delay(1000);
- while(1) ;
- } //------------------1#--步進(jìn)電機(jī)控制<<
- ES=1;//串口中斷
- }
復(fù)制代碼
|
|