- 打卡等级:以坛为家II
- 打卡总天数:401
- 最近打卡:2025-06-17 08:32:02
已绑定手机
超级版主
- 积分
- 2872
|
发表于 2025-2-14 15:51:18
|
显示全部楼层
第二集所有io口都支持的外部中断
#include <AI8051U.H>
#include "io_int.h"
#include "set_io.h"
#include "set_uart.h"
void main(void)
{
EAXFR=1;//扩展寄存器访问使能
CKCON=0;//设置访问片内扩展的xdata部分速度为最快
WTST=0;//设置取程序代码不等待,以最快速度运行
set_io_mode(hz_mode,Pin32,Pin33,Pin36,Pin_End);//设置p32,p33为高阻输入模式//io口上电默认为高阻输入模式
set_io_mode(en_pur,Pin32,Pin33,Pin36,Pin_End);//设置打开P32.P33内部4K的上拉电阻
set_io_mode(pp_mode,Pin37,Pin_End);//将串口发送脚P37设置为推挽输出,抗干扰
set_ioint_mode(falling_edge_mode,Pin32,Pin_End);//设置P32为下降沿中断
// set_ioint_mode (rising_edge_mode,Pin32,Pin_End );
// set_ioint_mode (low_level_mode,Pin32,Pin_End );
// set_ioint_mode (high_level_mode,Pin32,Pin_End );
set_ioint_mode (rising_edge_mode,Pin33,Pin_End );
set_ioint_mode (en_int,Pin32,Pin33,Pin_End );
// set_ioint_mode (dis_int,Pin32,Pin33,Pin_End );
set_uart_mode(Uart1,"115200bps",Use_Timer2,Base_8b,"64byte",Uart1_P36_7,Uart_End);
// set_uart_mode(Uart1,"9600bps",Use_Timerx,Odd_9b,"32byte",Uart1_P16_7,Uart_End);
// set_uart_mode(Uart1,Uart1_P36_7,Uart_End);//支持默认值操作,等效于set_uart_mode(Uart1,"115200bps",Use_Timer2,Base_8b,"64byte",Uart1_P36_7,Uart_End);
// set_uart_mode(Uart3,"9600bps",Use_Timerx,Base_8b,"64byte",Uart3_P50_1,Uart_End);
// set_uart_mode(Uart4,"38400bps",Use_Timerx,Base_8b,"64byte",Uart4_P52_3,Uart_End);
// 设置两个串口工作在不同的波特率下,使用的是8位无校验模式
// set_uart_mode(Uart3,"9600bps",Use_Timer2,Base_8b,"64byte",Uart3_P50_1,Uart_End);
// set_uart_mode(Uart4,"9600bps",Use_Timer2,Base_8b,"64byte",Uart4_P52_3,Uart_End);
// 设置两个串口工作相同的波特率下,使用的是8位无校验模式
EA=1;//总中断打开
while(1)
{
if (get_ioint_state (Pin32))
{
uart_printf(Uart1,"P32,Click\r\n");
}
if (get_ioint_state (Pin33))
{
uart_printf(Uart1,"P33,Click\r\n");
}
}
}
|
|