📄 int67.c
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
// 文件名:int67.c
//
// 编写人:LC
//
// 编写时间:2005/2/25
//
// 目标器件: C8051F02x
//
// 编译工具: Silicon Laboratories IDE
//
//程序说明
// 此程序测试C8051F020的中断6、7,可在相应的两个中断中设断点观察,中断处理时发光
// 二极管的状态也相应的会有改变.
//------------------------------------------------------------------------------------
// 头文件包含
//------------------------------------------------------------------------------------
#include <c8051f020.h>
#include <intrins.h>
sbit BUZ = P3^5;
//------------------------------------------------------------------------------------
// 常量定义
//------------------------------------------------------------------------------------
#define SYSCLK 2000000 //系统工作频率
//------------------------------------------------------------------------------------
// 函数定义
//------------------------------------------------------------------------------------
void PORT_Init (void);
void INT67_Init(void);
void INT6_ISR (void);
void INT7_ISR (void);
//------------------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//------------------------------------------------------------------------------------
void PORT_Init (void)
{
XBR2 = 0x40; /*使能交叉开关*/
P74OUT |= 0x0f; /*P4口推挽输出*/
}
//---------------------------------------------------------------------------------
//函数名称: INT67_Init ()
//函数功能: 外中断6、7初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//----------------------------------------------------------------------------------
void INT67_Init(void)
{
EIE2 |=0x30; /*允许外部中断6/7的请求*/
P3IF |=0xc0; /*当检测到P3.6/P3.7引脚的下降延时该由硬件置位*/
P3IF &=~0x40; /*关外部中断6标志*/
P3IF &=~0x80; /*关外部中断7标志*/
}
/***************************************************************************************
函数名称: void sleep_ms(WORD count)
功能描述: 延时
输入: WORD count(所要延时的长度)
输出: 无
全局变量: 无
调用模块: _nop_()
***************************************************************************************/
void sleep_ms(unsigned int count)
{
unsigned char ii,jj;
for(ii=0;ii<count;ii++)
{
for(jj=0;jj<250;jj++)
_nop_();
}
}
//------------------------------------------------------------------------------------
//函数名称: INT6_ISR ()
//函数功能: 外中断6中断服务程序
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//------------------------------------------------------------------------------------
void INT6_ISR (void) interrupt 18
{
P3IF &=~0x40; /*关外部中断6标志*/
BUZ=0; /*有键按下*/
sleep_ms(200);
BUZ=1;
}
//--------------------------------------------------------------------------------------
//函数名称: INT7_ISR ()
//函数功能: 外中断7中断服务程序
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//---------------------------------------------------------------------------------------
void INT7_ISR(void) interrupt 19
{
P3IF &=~0x80; /*关外部中断7标志*/
BUZ=0; /*有键按下*/
sleep_ms(200);
BUZ=1;
}
//------------------------------------------------------------------------------------
// 主程序
//------------------------------------------------------------------------------------
void main (void)
{
WDTCN = 0xde; /*禁止看门狗定时器*/
WDTCN = 0xad;
PORT_Init ();
INT67_Init();
EA = 1; /*使能中断总控制位*/
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -