第2集 所有普通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;//设置取程序代码不等待,以最快速度运行
- //初始化程序
- //按下P32按键,按下P33按键,通过串口打印出识别到的上升沿/下降沿
- set_io_mode(hz_mode,Pin32,Pin33,Pin36,Pin_End);
- //设置P32和P33为高阻输入模式,默认就是高阻
- 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);
- //设置P32为上升沿中断
- //set_ioint_mode(low_level_mode,Pin32,Pin_End);
- //设置P32为低电平中断
- //set_ioint_mode(high_level_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_ioint_mode(dis_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上
- //set_uart_mode(Uart1,"9600bps",Use_Timerx,"32byte",Odd_9b,Uart1_P16_7,Uart_End);
- //设置串口1为9600bps的波特率,使用定时器1作为串口波特率发生器
- //超时中断长度选择32byte,引脚切换到P16、P17
- //set_uart_mode(Uart1,Uart1_P36_7,Uart_End);
- //支持默认值操作,这部分设置等效为
- //设置串口1为9600bps的波特率,使用定时器1作为串口波特率发生器
- //超时中断长度选择32byte,引脚切换到P36、P37上
- //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))//设置P32为下降沿中断
- {
- uart_printf(Uart1,"P32 Click\r\n");
- }
- if(get_ioint_state(Pin33))//设置P33为上升沿中断
- {
- uart_printf(Uart1,"P33 Click\r\n");
- }
- }
- }
复制代码
|