找回密码
 立即注册
查看: 308|回复: 4

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2025-2-12 16:36:44 | 显示全部楼层 |阅读模式
第一集:I/O口模式设置
传统外部中断P3.2,P3.3,P3.4,P3.5 控制P0口的LED亮灭
(1)编译图片:

截图202502121628547376.jpg
(2)主要代码:

#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;
        set_io_mode(pu_mode, Pin40, Pin00, Pin01, Pin02, Pin03,Pin_End);
        P40=0;
    set_io_mode(hz_mode, Pin32, Pin33,Pin34,Pin35, Pin_End);              
    set_io_mode(en_pur, Pin32,Pin33,Pin34,Pin35, Pin_End);
        Delay1ms( );
        set_int_mode(falling_edge_mode,Int0,Int1,Int_End);
        EA=1;  
      while(1)        
        {
                if (get_int_state(Int0))
        {
            P00 = ~P00;
        }
                if (get_int_state(Int1))
                        {        
                         P01 = ~P01;         
                        }
        P02 =P34;
                P03= P35;
                }
        }

(3)学习视频:


AI8051U实验箱库函数 第一集:IO口模式和传统外部中断,手敲程序.zip (81.53 KB, 下载次数: 12)




电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2025-2-14 14:02:24 | 显示全部楼层
第二集:所有普通 I/O口 都支持的外部中断
按下P32按键,按下P33按键,通过串口打印出识别到的上升沿/下降沿
1.编译图片:
截图202502141416413644.jpg
2.主程序:
#include <AI8051U.H>
#include "io_int.h"
#include "set_io.h"
#include "set_uart.h"
void main(void)
{
        EAXFR = 1;
        CKCON = 0;
        WTST = 0;
        set_io_mode(hz_mode,Pin32,Pin33,Pin36,Pin_End);
        set_io_mode(en_pur,Pin32,Pin33,Pin36,Pin_End);
        set_io_mode(pp_mode,Pin37,Pin_End);
        set_ioint_mode(falling_edge_mode,Pin32,Pin_End);
       set_ioint_mode(rising_edge_mode,Pin33,Pin_End);
        set_ioint_mode(en_int,Pin32,Pin33,Pin_End);
        set_uart_mode(Uart1,"115200bps",Use_Timer2,Base_8b,"64byte",Uart1_P36_7,Uart_End);
        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");
                }
        }
}
3.学习效果图:
截图202502141419108720.jpg

AI8051U实验箱库函数 第二集:IO口支持中断 手敲程序.zip (269 KB, 下载次数: 5)






电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2025-2-18 17:28:08 | 显示全部楼层
第三集:24位定时器
【16位自动重装载定时器 + 8位预分频或不分频】= 24位定时器
1.编译图片:
截图202502181722588858.jpg

2.主代码:

#include <AI8051U.H>
#include "set_io.h"
#include "set_timer.h"

void main(void)
{
        EAXFR = 1;
        CKCON = 0;
        WTST = 0;
        set_io_mode( pu_mode, Pin40, Pin00, Pin01, Pin02, Pin03, Pin04, Pin05, Pin_End);
        P40 = 0;
        set_timer_mode(Timer0, "0.5s", Timer_End);
        set_timer_mode(Timer1, "100000hz", En_OutClk, Dis_Int, Timer_End);
        set_timer_mode(Timer2, "200ms", Timer_End);
        set_timer_mode(Timer3, "10hz", Timer_End);
        set_timer_mode(Timer4, "2s", Timer_End);
        set_timer_mode(Timer11, "300ms", Timer_End);
        EA = 1;
        while(1)
        {
                if(get_timer_state(Timer0))
                {
                        P00 = ~P00;
                }

                if(get_timer_state(Timer2))
                {
                        P02 = ~P02;
                }
                        if(get_timer_state(Timer3))
                {
                        P03 = ~P03;
                }
                        if(get_timer_state(Timer4))
                {
                        P04 = ~P04;
                        set_timer_mode(Timer4, Dis_Int, Timer_End);
                        
                }
               
                        if(get_timer_state(Timer11))
                {
                        P05 = ~P05;
                }                        
        }        
}

3.学习视频:


AI8051U实验箱库函数 第三集:定时器 手敲程序.zip (102.88 KB, 下载次数: 12)



电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2025-2-19 11:21:04 | 显示全部楼层
第四集:串口通信,有DMA支持,有接收超时中断

1.编译图片:
截图202502191114193790.jpg

2.主要代码:

#include <AI8051U.H>
#include "io_int.h"
#include "set_io.h"
#include "set_uart.h"
#include "stdio.h"
int num = 0;
char str[5] = {'a','b','c','d','e'};
void main(void)
{
        EAXFR = 1;
        CKCON = 0;
        WTST = 0;
       
    set_io_mode(pu_mode,Pin36,Pin37,Pin42,Pin43,Pin_End); //设置P36、P37端口为准双向口,推荐:TXD(推挽输出)、RXD(高阻输入+4K内部电阻上拉)
        set_uart_mode(Uart1, "115200bps", Uart1_P36_7, Use_Timerx, Uart_End);
        set_uart_mode(Uart2, Uart2_P42_3, "9600bps", Use_Timerx, Uart_End);
        set_io_mode(hz_mode, Pin34, Pin_End); //设置I/O中断,P34按键,按下时发送一个字符串
        set_io_mode(en_pur, Pin34, Pin_End);//打开内部上拉电阻
        set_ioint_mode(falling_edge_mode, Pin34, Pin_End);
        set_ioint_mode(en_int, Pin34, Pin_End);
        EA = 1;
       
        while(1)
        {
                if(get_ioint_state(Pin34))
                {
                         uart_printf(Uart1, "uart1,hello!\r\n");
                         uart_printf(Uart2, "uart2,hello!\r\n");
                }
               
                if(get_uart_state(Uart1))
                {
                        sscanf(_uart1_rx_buff, "num:%d", &num);
                        uart_printf(Uart1, "this_num:%d\r\n",num);
                        uart_printf(Uart2, Buff_Mode, str, 5);       
                }               
        }
       
}

3.学习效果:
截图202502191114594402.jpg

截图202502191119388224.jpg

AI8051U实验箱库函数 第四集:串口通信 手敲程序.zip (141.33 KB, 下载次数: 9)


电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:41
  • 最近打卡:2025-06-17 08:53:27

25

主题

408

回帖

2533

积分

超级版主

积分
2533
发表于 2025-2-19 13:30:21 | 显示全部楼层
第五集:ADC 库函数讲解
1.编译图片:
截图202502191146553917.jpg

2.主要程序:

#include <AI8051U.H>
#include "set_adc.h"
#include "set_io.h"
#include "set_timer.h"
#include "set_uart.h"

void main(void)
{
        EAXFR = 1;
        CKCON = 0;
        WTST = 0;       
        set_io_mode(pu_mode,Pin36,Pin37,Pin_End);
        set_timer_mode(Timer0, "0.5s", Dis_OutClk, En_Int, Timer_End);
        set_uart_mode(Uart1, "115200bps", Uart1_P36_7, Uart_End);
        set_adc_mode(cycl_mode, Adc0_P10, Adc_End);
        EA = 1;
       
        while(1)
        {
                if(get_timer_state(Timer0))//0.5s执行一次
                {
                        if(get_adc_state(Adc0_P10))
                        {
                        uart_printf(Uart1, "adc_dat:%d\r\n",adc_value[Adc0_P10]);
                        }
                }
               
        }
}

3.学习图片:
截图202502191328264242.jpg

AI8051U实验箱库函数 第五集:ADC库函数讲解 手敲程序.zip (176.29 KB, 下载次数: 9)


电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-18 04:07 , Processed in 0.124913 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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