第二集 所有普通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(high_level_mode,Pin32,Pin_End); //设置P32为高电平中断
- //set_ioint_mode(low_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为115200bps的波特率,使用定时器2作为串口波特率发生器
- //超时中断长度选择64byte,引脚切换到P36/P37上
-
- //set_uart_mode(Uart3,"9600bps",Use_Timerx,Base_8b,"64byte",Uart3_P50_1,Uart1_P36_7);
- //set_uart_mode(Uart4,"38400bps",Use_Timerx,Base_8b,"64byte",Uart4_P52_3,Uart1_P36_7);
- //实现设置两个串口工作在不同的波特率下,使用的是8位无校验模式
-
- //set_uart_mode(Uart3,"9600bps",Use_Timer2,Base_8b,"64byte",Uart3_P50_1,Uart1_P36_7);
- //set_uart_mode(Uart4,"9600bps",Use_Timer2,Base_8b,"64byte",Uart4_P52_3,Uart1_P36_7);
- //实现设置两个串口工作在相同的波特率下,使用的是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");
- }
- }
- }
复制代码
擎天柱版
一截图
二 视频
三 程序
- #include <AI8051U.H>
- #include "io_int.h"
- #include "set_io.h"
-
-
- void main(void)
- {
- EAXFR=1; //拓展寄存器访问使能
- CKCON=0; //设置访问片内扩展的xdata部分速度为最快
- WTST=0; //设置取程序代码不等待,以最快速度运行
-
- //初始化程序
- //按下P32按键,按下P33按键,通过串口打印出识别到的上升沿/下降沿
- set_io_mode(hz_mode,Pin32,Pin33,Pin_End); //设置p32/p33为高阻输入模式,默认就是高阻
-
- set_io_mode(en_pur,Pin32,Pin33,Pin_End); // 设置P32/P33内部的4K上拉电阻打开
-
- set_io_mode(pu_mode,Pin20,Pin21,Pin_End);
-
- set_ioint_mode(falling_edge_mode,Pin32,Pin_End); //设置P32为下降沿中断
- //set_ioint_mode(rising_edge_mode,Pin32,Pin_End); //设置P32为上升沿中断
- //set_ioint_mode(high_level_mode,Pin32,Pin_End); //设置P32为高电平中断
- //set_ioint_mode(low_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中断
-
-
-
- EA=1;
- while(1)
- {
- //循环执行的程序
- if(get_ioint_state(Pin32)) // 设置P32为下降沿中断
- {
- P20=~P20;
- }
- if(get_ioint_state(Pin33)) // 设置P33为上升沿中断
- {
- P21=~P21;
- }
- }
- }
复制代码
AI8051U专属库函数第二集 所有IO口都支持外部中断 实验箱版.zip
(148.01 KB, 下载次数: 6)
AI8051U专属库函数第二集 所有IO口都支持外部中断 擎天柱版.zip
(124.99 KB, 下载次数: 6)
|