登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 单片机

[复制链接]
发表于 2022-1-24 17:04:39 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-24
结束时间: 2022-01-24
对昨天的秒表进行了复习对其更加深层次的了解
同时对pwm进行了浅层次的了解可以使小灯闪烁四个亮度
#include<reg52.h>

sbit led=P2^0;
unsigned char HighRH=0;
unsigned char HighRL=0;
unsigned char LowRH=0;
unsigned char LowRL=0;
void ConfigPWM(unsigned int fr,unsigned char dc);
void ClosePWM        ();

void main()
{
unsigned int i;
        EA=1;
        while(1)
        {
        ConfigPWM(100,10);
                for(i=0;i<40000;i++);
                ClosePWM();
                        ConfigPWM(100,40);
                for(i=0;i<40000;i++);
                ClosePWM();
                        ConfigPWM(100,90);
                                for(i=0;i<40000;i++);
                                ClosePWM();
                       
                                for(i=0;i<40000;i++);
        }

}

void ConfigPWM(unsigned int fr,unsigned char dc)
{
unsigned int high,low;
        unsigned long tmp;
       
        tmp=(11059200/12)/fr;
        high=(tmp*dc)/100;
        low=tmp-high;
        high=65536-high+12;
        low=65536-low+12;
        HighRH=(unsigned char)(high>>8);
        HighRL=(unsigned char)high;
        LowRH=(unsigned char )(low>>8);
        LowRL=(unsigned char)low;
        TMOD=TMOD&0xF0;
        TMOD=TMOD|0x01;
        TH0=HighRH;
        TL0=HighRL;


                TR0=1;
                ET0=1;
        led=0;
}

void ClosePWM        ()
{
TR0=0;
        ET0=0;
        led=0;
}

void Interrupt()interrupt 1
{
if(led==0)
{
TH0=LowRH;
        TL0=LowRL;
        led=1;
}
else
{
TH0=HighRH;
        TL0=HighRL;
        led=0;
}
}       


好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表