单片机解密L298N电机驱动模块的单片机驱动程序 时间:2025-12-06 来源: 芯片解密 浏览:2次 字号:大 中 小 单片机解密单片机源程序如下:单片机解密#include <reg52.h>typedef unsigned int u16;typedef unsigned char u8;sbit PWM1 = P2^0; sbitPWM2 = P2^1;sbit key_add = P3^2;sbit key_less = P3^3;u16count = 50, time;void init0(){ TMOD= 0x01; // 方式一TH0 = (65536 - 10)/256; // 赋初值TL0 = (65536 - 10)%256; TR0 = 1; // 开启定时器0 EA = 1; // 开启总中断ET0 = 1; // 定时器0允许中断}void delayms(u16 z) // 延迟函数{ u16i, j; for (i = z; i > 0; i--) for(j = 110; j > 0; j--);}void speed_add() // 加速函数{ if(key_add == 0) { delayms(2); if (key_add == 0) { count+= 5; // 通过改变占空比来进行加速 } while (!key_add); }}void speed_less() //减速函数{ if (key_less == 0) { delayms(2); if (key_less == 0) { count -= 5; } while(!key_less); }} int main (void){ init0(); while (1) { speed_add(); speed_less(); } return0;}void T0_inter() interrupt 1{ TR0 =0; TH0 = (65536 - 10)/256;TL0 = (65536 - 10)%256; TR0 = 1; PWM1 = 0;time++ ; if (time < count) // 因为总数是100,所以可以直接看出占空比是多少。 { PWM2 = 1;} else { PWM2= 0; } if(time >= 100) { time = 0; }} 下一篇:单片机解密51单片机和ADC0809的数字电压表设计