找回密码
 立即注册
查看: 761|回复: 13

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

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-11-29 15:54:11 | 显示全部楼层 |阅读模式
第3集已学习,已手敲代码,测试通过

第三集打卡图片.png

第三集 点亮LED.zip

39.18 KB, 下载次数: 39

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-11-29 15:55:16 | 显示全部楼层
第4集已学习,已手敲代码,测试通过
第四集打卡图片.png

第四集 不停电下载.zip

87.17 KB, 下载次数: 37

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-11-29 15:56:29 | 显示全部楼层
第5集已学习,已手敲代码,测试通过

第五集打卡图片.png

第五集 C语言基础.zip

87.38 KB, 下载次数: 31

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-12-10 16:01:01 | 显示全部楼层

第6集学习打卡

第6集代码.png

第6集实验箱.png

第6集代码:

#include "ai8051u.h" //调用头文件
#include "stc32_stc8_usb.h"
#include "intrins.h" //调用头文件
#define u8 unsigned char //8位无符号变量(0-255)
#define u16 unsigned int //16位无符号变量(0-65535)
u8 state = 0; // 初始状态
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";

void Delay20ms(void) //@24.000MHz
{
unsigned long edata i;
nop();
nop();
i = 119998UL;
while (i) i--;
}

void main(void)
{
WTST = 0;
EAXFR = 1;
CKCON = 0;
P0M1 = 0x00; P0M0 = 0x00;
P1M1 = 0x00; P1M0 = 0x00;
P2M1 = 0x00; P2M0 = 0x00;
P3M1 = 0x00; P3M0 = 0x00;
P4M1 = 0x00; P4M0 = 0x00;
P5M1 = 0x00; P5M0 = 0x00;
P6M1 = 0x00; P6M0 = 0x00;
P7M1 = 0x00; P7M0 = 0x00;

usb_init();   
IE2 |= 0x80;                                           
EA = 1;                                                
    P40 = 0;                                              
    while (DeviceState != DEVSTATE_CONFIGURED);            
    while(1)                                              
    {                                                          
            if (bUsbOutReady)                                  
    {                                                 
       // USB_SendData(UsbOutBuffer,OutNumber);                                                                                                     
        usb_OUT_done();            
    }             
                    if(P32 == 0)                                                                       //判断P32按钮是否按下
                    {
                            P00 = 0;
                    }
                    else
                    {
                            P00 = 1;
                    }
    }      

}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-12-18 11:39:23 | 显示全部楼层
第7集打卡学习

程序:

#include "ai8051u.h" //调用头文件
#include "stc32_stc8_usb.h"
#include "intrins.h"  //调用头文件
#define u8 unsigned char  //8位无符号变量(0-255)
#define u16 unsigned int  //16位无符号变量(0-65535)

u8 state = 0;             //初始状态
//u8 Run_State = 0;         //运行状态


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

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

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

void Timer0_Init(void)        //3秒@24.000MHz
{
    TM0PS = 0x5B;            //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
    AUXR &= 0x7F;            //定时器时钟12T模式
    TMOD &= 0xF0;            //设置定时器模式
    TL0 = 0x3F;                //设置定时初始值
    TH0 = 0x01;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
    ET0 = 1;                //使能定时器0中断
    //TM0PS = 91;
    //12T  /12
    // TH0-TL0=319
}




void main(void)
{
    int count = 1;                                              //按键计数
    WTST = 0;                                               //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1;                                              //扩展寄存器(XFR)访问使能
    CKCON = 0;                                              //提高访问XRAM速度
     
    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;
   
    usb_init();   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                                                            
            usb_OUT_done();              
        }
   
             //任务1: LED灯三秒取反一次,这期间任意时刻按下按钮,串口打印按键次数
            if(P32 == 0)                                      //判断P32按钮是否按下
            {                                                
                Delay20ms();                                  //延时20ms消抖
                if( P32 == 0 )                                
                {                                             
                 
                printf("按键按下次数\xfd:%d 次\r\n",(int)count);
                count++;
                while(P32 == 0);                              //等待P32松开
                }
            }
            
               
    }
}   
        
        

void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
    state = !state;
     P00 = state;   
}


第7集图片.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-12-20 13:50:38 | 显示全部楼层
第8集


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

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;      
u8 num = 0;

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

void main(void)
{
    int count = 1;                                               
    Sys_init();         
    usb_init();      
        IE2 |= 0x80;
    Timer0_Init();
    EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);         
   
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);        

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();        
    }
   
}   

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

第八集定时器周期性调度任务.png

第8集 实验箱视频.mp4

1.3 MB, 下载次数: 25

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-12-25 15:33:05 | 显示全部楼层
第9集  手敲代码通过




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


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


void main(void)
{
        Sys_init();                                                                                //ϵͳ³õʼ»¯
        usb_init();                                     //USB CDC ½Ó¿ÚÅäÖÃ

    IE2 |= 0x80;                                    //ʹÄÜUSBÖжÏ
        Timer0_Init();                                                                        //¶¨Ê±Æ÷³õʼ»¯
    Init_595();
        EA = 1;                                                                                        //IE |= 0X80;
       
        P40 = 0;
       
        while (DeviceState != DEVSTATE_CONFIGURED);     //µÈ´ýUSBÍê³ÉÅäÖÃ
       
        while(1)
        {
               
        if (bUsbOutReady)                                                        //Èç¹û½ÓÊÕµ½ÁËÊý¾Ý
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //·¢ËÍÊý¾Ý»º³åÇø£¬³¤¶È£¨½ÓÊÕÊý¾ÝÔ­Ñù·µ»Ø, ÓÃÓÚ²âÊÔ£©
                       
            usb_OUT_done();                                                        //
        }
                Task_Pro_Handler_Callback();                                //Ö´Ðй¦Äܺ¯Êý

        }
}



void Timer0_Isr(void) interrupt 1                //1MSÖ´ÐÐÒ»´Î
{

        Task_Marks_Handler_Callback();                                        //ϵͳ¼ÆÊ±

}

第九集1图片.png
第9集2图片.png
第9集3图.png




第9集视频.mp4

1.31 MB, 下载次数: 27

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2024-12-26 16:37:24 | 显示全部楼层
第十集:

点亮P20端口


void TASK_1( void )
{
    //-------------------------p2端口流水灯------------------------
    LED40_SetPort(2,~P2_STATE);  //点亮P20端口
}

1.png


P2口流水灯,P10闪烁 ,见视频




左边数码管显示p32按下次数,右边数码管显示p33按下次数

2.png


按下数字按键在数码管显示对应的数字按键

3.png


第十集.mp4

1.62 MB, 下载次数: 26

第十集 虚拟LED和数码管.zip

464.92 KB, 下载次数: 25

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2025-1-14 15:26:14 | 显示全部楼层
第十一集
任务一
代码:

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

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化   
    usb_init();    //USB CDC接口配置   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
    EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);         
   
    while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);        

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();   
    }
   
}   

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


第十一集1.png
第十一集2.png

任务二
代码:

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

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                             
    Sys_init();   //函数调用,系统初始化   
    usb_init();    //USB CDC接口配置   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
    EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);            
   
    while(1)                                                
    {                                                         
        if (bUsbOutReady)                                 
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);         

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();   
    }
   
}   

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

11-2.png




第11集视频1.mp4

2.83 MB, 下载次数: 17

11-2.mp4

4.75 MB, 下载次数: 11

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:12
  • 最近打卡:2025-06-16 11:44:16

15

主题

116

回帖

1424

积分

版主

积分
1424
发表于 2025-1-21 15:29:20 | 显示全部楼层
第12集  复位系统


任务一:
代码:

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

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化       
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();  //执行功能函数       
       if( P33 !=0)       
                WDT_CONTR = 0X34;
        }
   
}   

void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}




任务二
(1)复位后进入下载模式
第12集任务二(1)图片.png




(2)复位后从头开始运行用户程序
第12集任务二(2)图片.png




程序:

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

u8 State[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化       
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                  
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);              //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
        if (bUsbOutReady)                                    //如果接收到了数据
        {                                                   
           // USB_SendData(UsbOutBuffer,OutNumber);           //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();              
        }
       Task_Pro_Handler_Callback();  //执行功能函数       
      
                WDT_CONTR = 0X34;
        }
   
}   

void Timer0_Isr(void) interrupt 1        //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}



回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-30 06:25 , Processed in 0.197889 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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