📄 fun.h
字号:
#include "intrins.h"
#include <reg51.h> //包含头文件
//定义端口寄存器
sfr P0M0 = 0X93;
sfr P0M1 = 0X94;
sfr P1M0 = 0X91;
sfr P1M1 = 0X92;
sfr P2M0 = 0X95;
sfr P2M1 = 0X96;
sfr P3M0 = 0Xb1;
sfr P3M1 = 0Xb2;
//与PCA0有关的寄存器
sfr CCON = 0xd8; //PCA控制寄存器
sbit CCF0 = CCON^0; //PCA0中断标志位
sbit CR = CCON^6; //运行控制位
sbit CF = CCON^7; //溢出标志
sfr CMOD = 0xd9; //PCA工作模式寄存器
sfr CL = 0xe9;
sfr CH = 0xf9;
sfr CCAPM0 = 0xda;//PCA0寄存器
sfr CCAP0L = 0xea;
sfr CCAP0H = 0xfa;
sfr PCAPWM0 = 0xf2;
#define fosc 11059200L
sbit s1 = P3^2;
unsigned char duty[5] = {0,25,50,75,100};
unsigned char duty_level;
void init_int()
{
IT0 = 1;//设置INT0为下降沿触发
EX0 = 1;//允许INT0中断
}
void init_port()
{
P1M1 = 0x00; //P1.3强推挽输出
P1M0 = 0x04;
}
void init_pca()
{
CCON = 0;
CL = 0;
CH = 0;
CMOD = 0x08; //时钟源为系统时钟,得到PWM的频率 = fosc / 256 = 43.2k
duty_level = 2; //占空比50%
CCAP0H = 255 - 255 * duty[duty_level] / 100;
CCAP0L = CCAP0H;
CCAPM0 = 0x42; //上升沿捕获,PWM使能
CR = 1; // 启动PWM
}
//定义延时函数
void ms_delay(unsigned int t)
{
unsigned int i;
for (t; t > 0; t--) //外层循环t次
for (i = 1320;i > 0; i--) //内层循环110*12次
;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -