找回密码
 立即注册
楼主: 32位8051-AI

《8051U深度入门到32位51大型实战教学视频》学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2025-1-24 16:40:56 | 显示全部楼层
打卡第十三集

任务一


#include "config.h"
#include "task.h"
#include "io.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay3000ms(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 17999998UL;
        while (i) i--;
}


void main(void)             //主函数
{
       
        Sys_init();       
        usb_init();
       
        IE2 |= 0x80;  
    Timer0_Init();
    Init_595();       
        INT1_Init();
    EA = 1;
       
        P40=0;
        while (DeviceState != DEVSTATE_CONFIGURED);
//        WDT_CONTR = 0X24;
       
         while(1)
         {
                 if (bUsbOutReady)
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   

            usb_OUT_done();
        }
//            Task_Pro_Handler_Callback();
//               
//                WDT_CONTR = 0X34;
                P00 = !P00;
                Delay3000ms();
               
        }
}


void Timer0_Isr(void) interrupt 1
{
                Task_Marks_Handler_Callback();
}

AI8051U教学视频第13集外部中断学习程序.zip (169.28 KB, 下载次数: 9)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2025-1-24 16:42:08 | 显示全部楼层
打卡第十四集

任务一


#include "config.h"
#include "task.h"
#include "io.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay3000ms(void)        //@24.000MHz
{
        unsigned long edata i;

        _nop_();
        _nop_();
        i = 17999998UL;
        while (i) i--;
}


void main(void)             //主函数
{
       
        Sys_init();       
        usb_init();
       
        IE2 |= 0x80;  
    Timer0_Init();
    Init_595();       
//        INT1_Init();
        P3_IO_Init();
        P4_IO_Init();
    EA = 1;
       
        P40=0;
        while (DeviceState != DEVSTATE_CONFIGURED);
//        WDT_CONTR = 0X24;
       
         while(1)
         {
                 if (bUsbOutReady)
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   

            usb_OUT_done();
        }
            Task_Pro_Handler_Callback();
                passward[0]=0;
//                if(P33!=0)
//                WDT_CONTR = 0X34;
//                P00 = !P00;
//                Delay3000ms();
               
        }
}


void Timer0_Isr(void) interrupt 1
{
                Task_Marks_Handler_Callback();
}

AI8051U教学视频第14集IO中断学习程序.zip (170.77 KB, 下载次数: 4)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2025-1-24 16:44:12 | 显示全部楼层
打卡第十五集

任务一

任务二


#include "tim.h"

u32 Count_T1 = 0;
//void TIM1_Count_Init(void)
//{
//        T1_CT = 1;
//        T1_M1 = 0;
//        T1_M0 = 0;
//        T1_GATE = 0;
//       
//        TH1 = (65536-Count_num)>>8;
//        TL1 = (65536-Count_num);
//       
//        P3PU |= 0x20;


//        TR1 = 1;
//        ET1 = 1;
//}

//void Timer1_Isr(void) interrupt 3
//{
//     Count_T1 ++;
//}

//void T1_RunTask(void)
//{
//        u32 count_th_tl=0;
//        count_th_tl = ((u16)TH1<<8) + (u16)TL1;
//        count_th_tl-=65526;
//       
//        SEG7_ShowLong(Count_T1*Count_num+count_th_tl,10);
//}

void Timer1_Isr(void) interrupt 3
{
        static u32 count_p33 = 0;
        if(P33==0)
        {
                count_p33++;
        }
        else
        {
                if(count_p33>0)
                {
                        Count_T1 = count_p33;
                }
                count_p33=0;
        }
}

void Timer1_Init(void)                //100微秒@24.000MHz
{
        AUXR |= 0x40;                        //定时器时钟1T模式
        TMOD &= 0x0F;                        //设置定时器模式
        TL1 = 0xA0;                                //设置定时初始值
        TH1 = 0xF6;                                //设置定时初始值
        TF1 = 0;                                //清除TF1标志
        TR1 = 1;                                //定时器1开始计时
        ET1 = 1;                                //使能定时器1中断
}

void T1_RunTask(void)
{
//        SEG7_ShowLong(Count_T1,10);
        SEG7_ShowString("%07.01f",((float)Count_T1)/10);
}


AI8051U教学视频第15集定时器做计shu器学习程序.zip (193.25 KB, 下载次数: 5)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:14
  • 最近打卡:2025-04-28 14:10:14

19

主题

385

回帖

2508

积分

版主

积分
2508
QQ
发表于 2025-2-14 14:11:39 | 显示全部楼层
打卡第十六集
截图202502141408259759.jpg


#include "usart.h"
#include "io.h"

u8 Rec_Dat[50];
u8 Rec_Num = 0;
bit B_TX2_Busy = 0;
void Uart2_Isr(void) interrupt 8
{
        if (S2CON & 0x02)        //检测串口2发送中断
        {
                S2CON &= ~0x02;        //清除串口2发送中断请求位
                B_TX2_Busy = 0;
        }
        if (S2CON & 0x01)        //检测串口2接收中断
        {
                S2CON &= ~0x01;        //清除串口2接收中断请求位
               
                Rec_Dat[Rec_Num++] = S2BUF;
        }
}

void Uart2_Init(void)        //9600bps@24.000MHz
{
        P_SW2 |= 0x01;                                                //UART2/USART2: RxD2(P4.6), TxD2(P4.7)

        S2CON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //定时器时钟1T模式
        T2L = 0x8F;                        //设置定时初始值
        T2H = 0xFD;                        //设置定时初始值
        AUXR |= 0x10;                //定时器2开始计时
        IE2 |= 0x01;                //使能串口2中断
        Rec_Num = 0;
        B_TX2_Busy = 0;
}
void Uart2_SendStr(u8 *puts)
{
        for(; *puts !=0;puts++)
        {
                S2BUF = *puts;
                B_TX2_Busy = 1;
                while(B_TX2_Busy);
        }
}

void Usart2_RunTask(void)
{
        if(Rec_Num >= 6)
        {
                if((Rec_Dat[Rec_Num-1] == '\n')&&(Rec_Dat[Rec_Num-2] == '\r'))
                {
                        if((Rec_Dat[Rec_Num-6] == 'O')&&(Rec_Dat[Rec_Num-5] == 'P')&&(Rec_Dat[Rec_Num-4] == 'E')&&(Rec_Dat[Rec_Num-3] == 'N'))
                        {
                                passward[0] = 16;
                                passward[1] = 16;
                                passward[2] = 16;
                                passward[3] = 16;
                                Uart2_SendStr("打开成功!\r\n");
                        }
                        else if((Rec_Dat[Rec_Num-7] == 'C')&&(Rec_Dat[Rec_Num-6] == 'L')&&(Rec_Dat[Rec_Num-5] == 'O')&&(Rec_Dat[Rec_Num-4] == 'S')&&(Rec_Dat[Rec_Num-3] == 'E'))
                        {
                                passward[0] = 17;
                                passward[1] = 17;
                                passward[2] = 17;
                                passward[3] = 17;
                                Uart2_SendStr("关闭成功!\r\n");
                        }
                        Rec_Num = 0;
                }
        }
}

附手敲程序
AI8051U教学视频第16集串口应用学习程序.zip (215.31 KB, 下载次数: 1)
QQ:1463035472,微信:19952583954
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-4 10:28 , Processed in 0.151237 second(s), 64 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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