- 打卡等级:初来乍到
- 打卡总天数:8
- 最近打卡:2025-04-27 10:40:24
版主
- 积分
- 1971
|
发表于 2025-2-19 11:56:51
|
显示全部楼层
第二集:所有普通 I/O口 都支持的外部中断
主程序
#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; //设置取程序代码不等待,以最快速度运行
//初始化程序
//按下P32按键,按下P33按键,通过串口打印出识别到的上升沿/下降沿
set_io_mode(hz_mode,Pin32,Pin33,Pin_End);
//设置P32和P33为高阻输入模式,IO口默认上电后都是高阻输入模式,上一句可注释掉
set_io_mode(en_pur,Pin32,Pin33,Pin_End);
//设置内部上拉电阻打开
set_io_mode(pp_mode,Pin37,Pin_End);
set_ioint_mode(falling_edge_mode,Pin32,Pin_End);
//设置P32为下降沿中断
set_ioint_mode(rising_edge_mode,Pin33,Pin_End);
//设置P33为上升沿中断
set_ioint_mode(en_int,Pin32,Pin33,Pin_End);
//同时打开P32和P33的IO中断
set_uart_mode(Uart1,"115200bps",Use_Timer2,Base_8b,"64byte",Uart1_P36_7,Uart_End);
//设置串口1为115200bps的波特率,使用定时器2作为串口波特率发生器
//超时中断长度选择64byte,引脚切换到P36、P37上
EA = 1;
while(1)
{
//循环执行的程序
if(get_ioint_state(Pin32))//设置P32为下降沿中断
{
uart_printf(Uart1,"P32 Click\r\n");
}
if(get_ioint_state(Pin33))//设置P33为上升沿中断
{
uart_printf(Uart1,"P33 Click\r\n");
}
}
}
第二集 所有普通IO口都支持的外部中断.zip
(143.7 KB, 下载次数: 7)
|
|