找回密码
 立即注册
查看: 486|回复: 5

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-12 16:17:26 | 显示全部楼层 |阅读模式
第一集:I/O口模式设置,传统外部中断【INT0, INT1, INT2, INT3, INT4】

截图202502121616037973.jpg

#include <AI8051U.H>
#include "set_int.h"
#include "set_io.h"
#include "intrins.h"
void Delay1ms(void)        //@40MHz
{
        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(pp_mode,Pin40,Pin00,Pin01,Pin_End);
        set_io_mode(hz_mode,Pin32,Pin33,Pin34,Pin35,Pin_End);
        set_io_mode(en_pur,Pin32,Pin33,Pin34,Pin35,Pin_End);
        //打开内部上拉电阻后,最好加一段1ms延时,以等待端口被拉高
        Delay1ms();//1ms的延时
        //set_io_mode(dis_pur,Pin32,Pin33,Pin_End);
        //set_io_mode(en_pur,Pin33,Pin32,Pin_End);//参数顺序无所谓
        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;
        }
        
        
}


IO口模式和传统的外部中断.mp4

8.69 MB, 下载次数: 8

第一集:IO口模式设置,传统外部中断手敲代码.zip

8.76 MB, 下载次数: 20

www.STCAI.com
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-14 15:51:18 | 显示全部楼层
第二集所有io口都支持的外部中断
截图202502141548016017.jpg

#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;//设置取程序代码不等待,以最快速度运行
                  set_io_mode(hz_mode,Pin32,Pin33,Pin36,Pin_End);//设置p32,p33为高阻输入模式//io口上电默认为高阻输入模式
                  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 );
//                set_ioint_mode (low_level_mode,Pin32,Pin_End );
//                set_ioint_mode (high_level_mode,Pin32,Pin_End );
                  set_ioint_mode (rising_edge_mode,Pin33,Pin_End );
                  set_ioint_mode (en_int,Pin32,Pin33,Pin_End );
//                set_ioint_mode (dis_int,Pin32,Pin33,Pin_End );
                  set_uart_mode(Uart1,"115200bps",Use_Timer2,Base_8b,"64byte",Uart1_P36_7,Uart_End);
//                set_uart_mode(Uart1,"9600bps",Use_Timerx,Odd_9b,"32byte",Uart1_P16_7,Uart_End);
//                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_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))
                {
                        uart_printf(Uart1,"P32,Click\r\n");
                }
                if (get_ioint_state (Pin33))
                {
                        uart_printf(Uart1,"P33,Click\r\n");
                }
        }
       
       
       
}



所有io口都支持的外部中断.mp4

3.96 MB, 下载次数: 11

第二集:所有IO口都支持的外部中断手敲代码.zip

4.09 MB, 下载次数: 12

www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-14 16:16:14 | 显示全部楼层
第二集所有io口都支持的外部中断——擎天柱

截图202502141614039426.jpg

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


void main(void)
{
                        EAXFR=1;//扩展寄存器访问使能
                CKCON=0;//设置访问片内扩展的xdata部分速度为最快
                WTST=0;//设置取程序代码不等待,以最快速度运行
                  set_io_mode(hz_mode,Pin32,Pin33,Pin_End);//设置p32,p33为高阻输入模式//io口上电默认为高阻输入模式
                  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 );
//                set_ioint_mode (low_level_mode,Pin32,Pin_End );
//                set_ioint_mode (high_level_mode,Pin32,Pin_End );
                  set_ioint_mode (rising_edge_mode,Pin33,Pin_End );
                  set_ioint_mode (en_int,Pin32,Pin33,Pin_End );
//                set_ioint_mode (dis_int,Pin32,Pin33,Pin_End );

                EA=1;//总中断打开
        while(1)
        {
   if (get_ioint_state (Pin32))
                {
                        P20=~P20;
                }
                if (get_ioint_state (Pin33))
                {
                        P21=~P21;
                }
        }
       
       
       
}


所有IO口都支持的外部中断-擎天柱.mp4

2.96 MB, 下载次数: 10

所有IO口都支持的外部中断-擎天柱手敲代码.zip

3.07 MB, 下载次数: 10

www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-17 16:26:15 | 显示全部楼层
第三集:24位定时器

截图202502171624416015.jpg

#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_fosc(11059200UL);
        set_timer_mode(Timer0,"0.5s",Timer_End);
//        set_timer_mode(Timer1,"1s",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(Timer1))
//                {
//                        P01=~P01;
//                }
                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;
                }
        }
       
       
}


24位定时器.mp4

867.76 KB, 下载次数: 10

第三集:24位定时器手敲代码.zip

968.24 KB, 下载次数: 9

www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-19 15:56:51 | 显示全部楼层
第四集:串口部分库函数讲解

截图202502191553052189.jpg

#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);       
                set_uart_mode(Uart1,"115200bps",Uart1_P36_7,Use_Timerx,Uart_End);
//                set_uart_mode(Uart1,Uart1_P36_7,"115200bps",Uart_End);
                set_uart_mode(Uart2,"9600bps",Uart2_P42_3,Use_Timerx,Uart_End);
                set_io_mode(hz_mode,Pin34,Pin_End);
                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);
                }
        }
       
       
}

截图202502191555383205.jpg

第四集:串口部分库函数讲解手敲diamond.zip

140.58 KB, 下载次数: 12

www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:401
  • 最近打卡:2025-06-17 08:32:02
已绑定手机

13

主题

223

回帖

2872

积分

超级版主

积分
2872
发表于 2025-2-19 16:31:03 | 显示全部楼层
第五集:ADC部分库函数

截图202502191624122925.jpg

#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))
             {
                if(get_adc_state(Adc0_P10))
                  {
                   uart_printf(Uart1, "adc_dat:%d\r\n",adc_value[Adc0_P10]);
                  }
              }
               
        }
}


ADC库函数.mp4

4.49 MB, 下载次数: 11

第五集:ADC库函数手敲代码.zip

175.28 KB, 下载次数: 11

www.STCAI.com
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 23:55 , Processed in 0.149189 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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