#include #define uint unsigned int uint pp; char num=2,dis; sbit pwm=P1^0; sbit s2=P3^4; sbit s3=P3^5; sbit dula=P2^6; sbit wela=P2^7; unsigned char code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; void keyscan() { if(s2==0) { while(!s2); num++; if(num==11) num=10; dis=num; } if(s3==0) { while(!s3); num--; if(num==-1) num=0; dis=num; } } void display(a) { dula=0; P0=table[a]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; } void main() { TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。 TR0=1; //打开定时器 TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。 TL0=0Xa4; ET0=1; //开定时器0中断 EA=1; //开总中断 while(1) { keyscan(); if((num!=0)&&(num!=10)) //对于占空比为0和100%这两种极端情况,最好分离出,单独考虑 { if(pp<=num) pwm=1; else pwm=0; } else if(num==0) //当占空比为0 pwm=0; else pwm=1; if(pp==10) //当占空比为100% pp=0; display(num);//显示num当前值,占空比为num/10。 } } void time0() interrupt 1 { TH0=0Xff; TL0=0Xa4; pp++; }
上一篇:Keil C51单片机集成开发环境编程与调试教程
下一篇:51单片机串口发送字符事例
推荐阅读最新更新时间:2024-11-12 22:46
设计资源 培训 开发板 精华推荐
- 根据 EN50121-3-2(双输出)使用带有 EMC 滤波的 RP40-2412DFR DC/DC 转换器的典型应用
- -15V DC 至 DC 单路输出电源
- 【训练营】这么炫彩
- V1.2 ESP32太阳能热水器接入Homeassistant
- 禁用看门狗的 LTC2938IDE 四电源监视器的典型应用电路
- ATSAMA5D2-PTC-EK、基于 ATSAMA5D2 MPU 的 SAMA5D2-PTC-EK 评估套件,用于评估使用外设触摸控制器 (PTC) 的电容式触摸控制
- NCP51400 3 Amp VTT 终端稳压器 DDR1、DDR2、DDR3、LPDDR3、DDR4 的典型应用
- SI5341-EVB,基于 Si5341 低抖动任意频率时钟发生器的评估板
- 使用 NXP Semiconductors 的 SA58631 的参考设计
- LT1109CZ 闪存 VPP 发生器的典型应用电路