8051启蒙者 发表于 2025-2-12 17:08:31

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

第一集:I/O口模式设置,传统外部中断【INT0, INT1, INT2, INT3, INT4】

596

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

8051启蒙者 发表于 2025-2-13 17:19:21

第二集打卡

602

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

页: [1]
查看完整版本: Ai8051U创新风格库函数学习打卡