找回密码
 立即注册
查看: 296|回复: 1

Ai8051U创新风格库函数 学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-06-16 11:19:01

29

主题

260

回帖

2203

积分

超级版主

积分
2203
发表于 2025-2-12 17:16:14 | 显示全部楼层 |阅读模式

第一集:I/O口模式设置,传统外部中断

截图202502121657293953.jpg


main.c主程序代码:

#include <AI8051U.H>
#include "set_int.h"
#include  "set_io.h"
#include  "intrins.h"

void Delay1ms(void)        //@40.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        _nop_();
        i = 9998UL;
        while (i) i--;
}

void main(void)
{   
  EAXFR = 1;
        CKCON = 0;
        WTST = 0;
        //设置io端口模式,将P40置为低电平
       //设置P32 P为高阻输入模式 同时打开内部上拉电阻
        set_io_mode(pu_mode,Pin40,Pin00,Pin01,Pin02,Pin03,Pin_End);
        P40 = 0;
         //set_io_mode(pp_mode,Pin40,Pin00,Pin01,Pin_End);
        set_io_mode(hz_mode, Pin32, Pin33, Pin_End);   //设置P32 和P33为高阻输入模式
        
        set_io_mode(en_pur, Pin32, Pin33, Pin_End);   //打开内部上拉电阻后,最好加一段1ms的延时,以等待端口被拉高。
        Delay1ms();
//打开P32 P33内部的上拉电阻
set_io_mode(dis_pur, Pin32, Pin33,Pin33,Pin34,Pin35, Pin_End);  //关闭 P32 P33 P34 P35 内部上拉电阻
set_io_mode(en_pur, Pin32, Pin33,Pin34,Pin35, Pin_End);
        set_int_mode(falling_edge_mode, Int0,Int1,Int_End);
         
        EA = 1;   //打开总中断
        while(1)
{
        if(get_int_state(Int0))
        {
        P00 = ~P00;   //Int0 中断时执行的部分
        }
        if(get_int_state(Int1))
        {
        
        P01 = ~P01;  //Int1 中断时执行的部分
        }
        P02 = P34;
         P03 = P35;
}
   
}




QQ:3398500488
微信号:18106296592(小刘)
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:19
  • 最近打卡:2025-06-16 11:19:01

29

主题

260

回帖

2203

积分

超级版主

积分
2203
发表于 2025-2-18 13:34:13 | 显示全部楼层

第二集 所有普通I/O都支持外部中断 学习打卡
截图202502181323594680.jpg

2.  main.c 代码

#include <AI8051U.H>
#include "io_int.h"
#include  "set_io.h"
#include  "set_uart.h"



void main(void)
{   
  EAXFR = 1;
        CKCON = 0;
        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_leve_mode,Pin32,Pin_End);   //设置P32 为低电平中断
       
        //set_ioint_mode(high_leve_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 115200波特率,用定时器2作为串口波特率发生器
       
        //set_uart_mode(Uart1,"9600bps",Use_Timerx,"32byte",Odd_9b,Uart1_P16_7,Uart_End);
        //设置串口1为9600波特率,用定时器1作为串口波特率发生器
         
         //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_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位无校验模式
         
        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");
         }
}

QQ:3398500488
微信号:18106296592(小刘)
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-18 21:16 , Processed in 0.114321 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表