📄 main.c
字号:
/* ****************************************************************
** 功能描述: CCP1模块比较工作方式,实现8个发光二极管交替亮灭控制
*************************************************************** */
#include "pic18.h" /* PIC18系列的头文件 */
unsigned char Time1_No=0; /* 200ms比较匹配次数,5次则计为1s */
unsigned char Out_Flag=0; /* 间隔1秒输出数据标志 */
unsigned char LED=0; /* 显示数据标志 */
/* ****************************************************************
** 函 数 名: initial()
** 功能描述: 系统初始化子程序,放在程序首部
*************************************************************** */
void initial()
{
INTCON=0x00; /* bit7-bit0:关总中断 */
ADCON1=0X07; /* 设置数字输入输出口 */
PIE1=0; /* PIE1 的中断不使能 */
PIE2=0; /* PIE2 的中断不使能 */
PIE3=0; /* PIE3 的中断不使能 */
}
/* **************************************************************
** 函 数 名: CCPinitial()
** 功 能:CCP1捕捉初始化子程序
****************************************************************** */
void CCPinitial()
{
TRISC2=0; /* 设置CCP1(RC2)引脚为输出方式*/
TMR1H=0xc3;
TMR1L=0x50; /* 0xc350=50000 */
T1CON=0x21; /* Timer1为定时工作,4分频,使能Timer1工作 */
CCP1IE=1; /* CCP1中断使能 */
CCP1CON=0X0A; /* CCP1工作于比较方式 */
CCP1IP=1; /* CCP1CCP1高优先级中断 */
}
/* ****************************************************************
** 函 数 名: interrupt HI_ISR()
** 功能描述: 高优先级中断子程序:CCP1捕捉中断
*************************************************************** */
void interrupt HI_ISR()
{
if(CCP1IF==1) /* CCP1中断 */
{
CCP1IF=0; /* 清标志 */
Time1_No++; /* 200ms比较匹配次数 */
if(Time1_No>=4)
{
Time1_No=0; /* 1秒时间到,200ms比较匹配次数 */
Out_Flag=1; /* 置间隔1秒输出数据标志 */
}
}
}
main()
{
initial(); /* 系统初始化子程序 */
CMCON=0x07; /* 关比较器 */
TRISD=0x00; /* PORTD口为输出 */
PORTD=0xff; /* PORTD口输出全1,8个发光二极管全灭 */
CCPinitial(); /* CCP1捕捉设置 */
IPEN=1; /* 使能中断高低优先级 */
INTCON=INTCON|0xc0; /* 开总中断、开外围接口中断 */
while(1)
{
if(1==Out_Flag) /* 比较工作方式计时的1s时间到 */
{
Out_Flag=0; /* 清标志 */
LED=~LED; /* 输出数据取反,实现发光二极管亮灭交替 */
PORTD=LED; /* 输出数据 */
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -