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

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-27 09:58:59

11

主题

37

回帖

622

积分

版主

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

截图202502121643428017.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;
        }
        
        
}
1.jpg

5a031bf8b73cd6ce7f8e081f53e4f772.mp4

1.72 MB, 下载次数: 5

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

8.76 MB, 下载次数: 5

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-27 09:58:59

11

主题

37

回帖

622

积分

版主

积分
622
发表于 2025-2-13 16:53:28 | 显示全部楼层
第二集:所有普通 I/O口 都支持的外部中断

截图202502131650575687.jpg
手敲代码如下:

#include "AI8051U.h"
#include "set_int.h"   
#include "set_io.h"   
#include "set_timer.h"



void main(void)
{
    EAXFR = 1;
    WTST = 0;
    CKCON = 0;
   
    P40 = 0;
   
    set_io_mode(pp_mode, Pin40, Pin_End);
   
    set_io_mode(pu_mode, Pin00, Pin01, Pin02, Pin32, Pin33, Pin_End);
   

   
    set_int_mode(falling_edge_mode, Int0, Int1, Int_End);

   
    set_timer_mode(Timer0, Timer_End);
    et_timer_state查询即可
    EA = 1;
    while (1)
    {
        
        if (get_int_state(Int0))
            P00 = ~P00;
        if (get_int_state(Int1))
            P01 = ~P01;
        if (get_timer_state(Timer0))
            P02 = ~P02;
    }
}

第二集库函数.mp4

1.73 MB, 下载次数: 4

回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 10:19 , Processed in 0.119649 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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