![]() |
發布時間: 2017-10-7 23:32
正文摘要:這個代碼主要是有兩個繼電器,分別控制兩個水泵,目的就是要實現如圖所示的程序。但目前程序只能讓兩個水泵同時工作,沒有停止的時候。謝謝! |
#include"reg52.h" sbit lone=P1^5; sbit ltwo=P1^6; sbit start=P3^0; sbit stop=P3^1; sbit AUTO=P3^2; sbit hand=P3^3; sbit forward=P3^4; sbit reverse=P3^5; sbit acceleration=P3^6; sbit deceleration=P3^7; sbit direction=P1^0; //zhuanfan sbit RS=P1^1; //on off sbit PMW=P1^2; //kongzhi int CYCLE,PWM_ON,count; void initial() { CYCLE=20; PWM_ON=0; count=0; } void DelayMs(unsigned char z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void nit_Timer0(void) { TMOD|=0x01; TH0=(65536-2000)/256; TL0=(65536-2000)%256; EA=1; ET0=1; TR0=1; } void Timer0_isr(void) interrupt 1 { TH0=(65536-2000)/256; TL0=(65536-2000)%256; if(count==PWM_ON)//如果定時等于on的時間說明作用時間結束,輸出低電平 { PMW=0; } if(count==CYCLE)//反之低電平時間結束后返回高電平 { count=0; if(PWM_ON!=0)//如果開啟時間是0保持原來狀態 { PMW=1; } } count++; } void accelerate() { if(PWM_ON==CYCLE) { } else {PWM_ON++;} } mian() { initial(); Iint_Timer0(); while(1) { if(!stop) { lone=1; PWM_ON=0; ltwo=1; PWM_ON=0; while(start) { RS=0; } } } } |