- 打卡等级:初来乍到
- 打卡总天数:7
- 最近打卡:2025-04-27 09:41:36
版主
- 积分
- 1322
|
第一集 I/O口模式设置和传统的外部中断
程序:
#include <AI8051U.H>
#include "set_int.h"
#include "set_io.h"
#include "intrins.h"
void Delay1us(void) //@24.000MHz
{
unsigned long edata i;
_nop_();
_nop_();
_nop_();
i = 4UL;
while (i) i--;
}
void main(void)
{
EAXFR = 1;//拓展寄存器访问使能
CKCON = 0;//设置访问片内扩展的xdata部分速度为最快
WTST = 0;//设置取程序代码不等待,以最快速度运行
set_io_mode(pu_mode, Pin40,Pin00,Pin01,Pin02,Pin03,Pin_End);
P40 = 0;
//set_io_mode(pu_mode, Pin40,Pin00,Pin01,Pin_End);
set_io_mode(hz_mode,Pin32,Pin33,Pin34,Pin35,Pin_End);
set_io_mode(en_pur,Pin32,Pin33,Pin34,Pin35,Pin_End);
Delay1us();
//set_io_mode(dis_pur,Pin32,Pin33,Pin_End);//关闭P32和P33的内部上拉电阻
//set_io_mode(en_pur,Pin32,Pin33,Pin_End);//关闭P32和P33的内部上拉电阻,参数顺序无所谓
set_int_mode(falling_edge_mode,Int0,Int1,Int_End);
//设置INT0和INT1为下降沿中断
set_int_mode(rising_falling_edge_mode,Int0,Int1,Int_End);
//设置INT0和INT1为边沿中断
EA = 1;//打开总中断
while(1)
{
if(get_int_state(INT0))
{
//INT0中断执行的部分
P00 = ~P00;
}
if(get_int_state(INT1))
{
//INT1中断执行的部分
P01 = ~P01;
}
P02 = P34;
P03 = P35;
}
}
编译成功:
操作视频:
|
|