找回密码
 立即注册
查看: 173|回复: 3

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 08:40:45
已绑定手机

12

主题

164

回帖

1629

积分

超级版主

积分
1629
发表于 2025-2-12 16:51:29 | 显示全部楼层 |阅读模式
第一集 I/O口模式和传统的外部中断



#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;
                }
        }

HXRT)L[YDI0`EQ~LZ~]HL`T.png




QQ:2768446529  手机:19952605150(微信同号)
www.STCAI.com
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 08:40:45
已绑定手机

12

主题

164

回帖

1629

积分

超级版主

积分
1629
发表于 2025-3-3 11:59:35 | 显示全部楼层
第二集所有io口都支持的外部中断


#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))
        {
        uart_printf(Uart1,"P32 Click\r\n");
        }
        if(get_ioint_state(Pin33))
        {
                uart_printf(Uart1,"P33 Click\r\n");
        
        }
}

}




0D%5$SL@IS3)SR~32ENKS60.png

QQ:2768446529  手机:19952605150(微信同号)
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 08:40:45
已绑定手机

12

主题

164

回帖

1629

积分

超级版主

积分
1629
发表于 2025-3-3 14:55:33 | 显示全部楼层
第三集  24位定时器

`T2$%PVNVDD9[Y(%GFUL}$P.png



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

void main(void)
{
        EAXFR = 1;
        CKCON = 0; //设置访问片内扩展XDATA部分速度为最快
        WTST =0;        //设置取程序代码不等待,以最快速度运动
        
        //初始化代码
        //P40设置为准双向口,同时设置为低电平
         set_io_mode(pu_mode,Pin40,Pin00,Pin01,Pin02,Pin03,Pin_End);
         P40 = 0;
        //设置P00~P05 I/O口为准双向口
         //set_timer_fosc(11059200UL);
         set_timer_mode(Timer0,"0.5s",Timer_End);
         set_timer_mode(Timer1,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);

        //设置定时0为0.5s,定时器1为1S,定时器2为200ms,定时器3为10Hz
        //定时器4为2S,定时器11为300ms,
        //初始化定时器,让P00每隔1S闪烁一次,p01每隔0.5S闪烁一次
        
           EA = 1;
  while(1)
{
         //循环执行代码
         //检测定时器是否中断
         //对LED对应的IO口进行取反
         if(get_timer_state(Timer0))//1s改变一次
         {
                P00 = ~P00;
         }
         if(get_timer_state(Timer1))//0.5s改变一次
         {
                P01 = ~P01;
         }
         if(get_timer_state(Timer2))
         {
                P02 = ~P02;
         }                 
                 if(get_timer_state(Timer3))
         {
                P03 = ~P03;
         }
                 if(get_timer_state(Timer4))
         {
                P04 = ~P04;
   }
         if(get_timer_state(Timer11))
         {
                P05 = ~P05;
         }
}
}



QQ:2768446529  手机:19952605150(微信同号)
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:32
  • 最近打卡:2025-04-30 08:40:45
已绑定手机

12

主题

164

回帖

1629

积分

超级版主

积分
1629
发表于 2025-3-6 13:58:54 | 显示全部楼层
第4集 串口部分库函数


#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; //设置访问片内扩展的xdata部分速度为最快
        WTST = 0; //设置取程序代码不等待,以最快速度运行
        //需要初始化部分的程序
        //设置P36、P37端口为准双向口,推荐:TXD(推挽输出)、RXD(高阻输入+4K内部电阻上拉)
        set_io_mode(pu_mode,Pin36,Pin37,Pin42,Pin43,Pin_End);
        //不同波特率的串口使用,以及printf函数的使用
         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, Uart2_P42_3, "9600bps", Use_Timerx, Uart_End);
        //设置I/O中断,P34按键,按下时发送一个字符串
         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);      
                }            
        }  
}


4M02C1XT{PRB4{529EER6FU.png

QQ:2768446529  手机:19952605150(微信同号)
www.STCAI.com
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 15:09 , Processed in 0.511088 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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