AI8051U创新风格库函数学习打卡
打卡第一集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(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);
Delay1ms();
//set_io_mode(dis_pur,Pin32,Pin33,Pin_End);
set_int_mode(falling_edge_mode,Int0,Int1,Int_End);
//set_int_mode(rising_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口都支持的外部中断
#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); //设置P32为下降沿中断
set_ioint_mode(rising_edge_mode,Pin33,Pin_End); //设置P33为上升沿中断
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");
}
}
}
打卡第三集24位定时器
#include <AI8051U.H>
#include "set_io.h"
#include "set_timer.h"
void main()
{
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,"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;
}
}
}
页:
[1]