下学期有比赛,从小白开始备赛(流汗黄豆)。
这个比赛的思路是先用proteus进行单片机的硬件仿真,然后用keil烧录程序实现功能,好处是可以完全脱离硬件,避免硬件损坏而导致程序实现出现各种问题。但是捏,全软件也就意味着你得非常清楚51的硬件并且将他仿真出来。下面是我的定时器模块的小训练,(刚学,凑活着看吧……)
需要的功能:利用定时器发生1s翻转一次的脉冲。
第一步:先在proteus上实现硬件仿真,具体如下所示:
这里是参照b站一个up主(一玮工作室)的 ,刚开始外围器件比较简单,主要就是晶振,外部复位,EA非的启动,P0的上拉电阻。
第二步:软件实现
引入头文件+设置定时器初始化第三步
#include "reg51.h"
sbit wave = P2^0;
unsigned int i;
void Service_timer0()
{
TMOD = 0X01;//工作模式1,16位定时器/计数器
TH0 = (65536-50000)/256;//高八位
TL0 = (65536-50000)%256;//低八位
ET0 = 1; //中断允许
TR0 = 1; //允许计数,启动控制
EA = 1; //总开关
}
void Timer0() interrupt 1
{
TH0 = (65536-50000)/2