找回密码
 立即注册
查看: 322|回复: 8

8051U深度入门到32位51,冲哥 新教学视频 学习打卡

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-11-29 11:32:56 | 显示全部楼层 |阅读模式
本帖最后由 热心市民 于 2024-11-29 15:55 编辑

第一集第二集快速看完
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-11-29 11:35:14 | 显示全部楼层
本帖最后由 热心市民 于 2024-11-29 15:55 编辑

第三集开始上手写代码
点亮led,最后8个灯全亮
截图202411291134199643.jpg 截图202411291135083102.jpg

第三集代码.zip

40.63 KB, 下载次数: 28

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-11-29 11:39:53 | 显示全部楼层
本帖最后由 热心市民 于 2024-11-29 15:59 编辑

第四集usb不停电下载打卡成功,,跟着一步一步操作肯定是能成功的,冲哥真的教的非常的详细适合小白入门
截图202411291139277363.jpg 截图202411291139472983.jpg

第四集代码.zip

2.02 MB, 下载次数: 29

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-11-29 17:27:09 | 显示全部楼层
第五集,C语言基础,
C语言USB-CDC串口之printf函数的实现·
1.打开USB库中的PRINTF HID宏定义(去掉//)
⒉理解PRINTF的函数原型的定义
如何打开PRINTF_HID功能
(小插曲
总结上节课不停电下载不成功的原因,1设置项目target未按要求设置,
截图202411291621506799.jpg
2,usb_cdc的lib库函数没有添加成功)
继续学习
截图202412051349193112.jpg
截图202412051356446698.jpg 代码已通过

第五集c语言代码示例代码.zip

80.75 KB, 下载次数: 23

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-12-5 16:42:44 | 显示全部楼层
第六集IO的输入输出,学习打卡 完成
截图202412051639352113.jpg

第6集IO输入输出.zip

82.15 KB, 下载次数: 22

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-12-5 16:43:23 | 显示全部楼层
第七集学习打卡完成
第7集定时器中断.zip (84.83 KB, 下载次数: 20)
截图202412061150136912.jpg
截图202412061150347825.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2024-12-6 11:51:12 | 显示全部楼层
第八集开始学习。。
截图202501240859385234.jpg

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



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

u8 i;
//State[0]

u8 Run_State = 0;                                                        //运行状态

u8 num = 0;

//u16 Count_300 = 0;                                                //计数300ms变量
//u16 Count_600 = 0;
//u16 Count_900 = 0;

u16 Count_ms[3] = {0,0,0};                                       

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                        //3个计时变量       

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

        _nop_();
        _nop_();
        _nop_();
        i = 59998UL;
        while (i) i--;
}
       
void main(void)
{
//    int count;
        Sys_init();                                        //系统初始化
    usb_init();                                          //USB CDC 接口配置

        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();                                                       
        }
                Task_Pro_Handler_Callback();                                        //执行函数                       
        }
}



void Timer0_Isr(void) interrupt 1                                                //1毫秒执行一次
{
        Task_Marks_Handler_Callback();
}       
//        Count_300++;
//        Count_600++;
//        Count_900++;
//        state = !state;                                                        //变量取反0 1 0 1 0 1       
//        P00 = state;       
//        P01 = !state;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2025-1-24 09:08:57 | 显示全部楼层
第九集 数码管
任务一:数码管静态的显示一个数字
截图202501240900579980.jpg
截图202501240901123114.jpg
任务二:显示“12345678”
截图202501240901372122.jpg
截图202501240906175263.jpg
任务三:显示时分秒
截图202501240907373242.jpg

截图202501240907517638.jpg

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



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

u8 i;
//State[0]

u8 Run_State = 0;                                                        //运行状态

u8 num = 0;

//u16 Count_300 = 0;                                                //计数300ms变量
//u16 Count_600 = 0;
//u16 Count_900 = 0;

u16 Count_ms[3] = {0,0,0};                                       

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";                        //3个计时变量       

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

        _nop_();
        _nop_();
        _nop_();
        i = 59998UL;
        while (i) i--;
}
       
void main(void)
{
//    int count;
        Sys_init();                                        //系统初始化
    usb_init();                                  //USB CDC 接口配置

        IE2 |= 0x80;                //使能USB中断
        Timer0_Init();                                //定时器初始化
        Init_595();                                        //595端口初始化
    EA = 1;       
       
        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                                                //1毫秒执行一次
{
        Task_Marks_Handler_Callback();
}       
//        Count_300++;
//        Count_600++;
//        Count_900++;
//        state = !state;                                                        //变量取反0 1 0 1 0 1       
//        P00 = state;       
//        P01 = !state;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-05-06 10:35:34

17

主题

38

回帖

193

积分

注册会员

积分
193
发表于 2025-1-24 15:02:19 | 显示全部楼层
第十集:虚拟键盘led和数码管学习
任务1:P2口流水灯,P10闪烁,成功




#include "io.h"

u8 State1 = 0;                                        //LED1初始状态
u8 State2 = 0;                                        //LED2初始状态
u8 State3 = 0;                                        //LED3初始状态

u16 Key_Vol = 0;                                //按键按下持续时间

void LED0_Blink(void)
{
        State1 = !State1;
        P00 = State1;
}

void LED1_Blink(void)
{
        State2 = !State2;
        P01 = State2;
}

void LED2_Blink(void)
{
        State3 = !State3;
        P02 = State3;
}

void KEY_Task(void)
{
        if( P32 == 0 )
        {
                Key_Vol++;
                if( Key_Vol==5 )
                {
                        //按键按下的任务
                        printf( "按键单击\r\n" );
                }
        }
        else
        {
                Key_Vol = 0;
        }
        
}

u8 P2_STATE=0x01;
u8 P10_STATE=0;

//任务1:P2口流水灯,P10闪烁
void TASK_1( void )
        
{
        //------------------------P2端口流水灯---------------
         LED40_SetPort(2,~P2_STATE);              //点亮P20端口
        
        P2_STATE=(P2_STATE<<1);                //10000 0000->1 0000 0000
        if(P2_STATE ==0)
                P2_STATE=1;
        
        //------------------------P10端口闪烁---------------
        if (P10_STATE==0)

        LED40_SetBit(1,0);
        
else
        LED40_ClrBit(1,0);

P10_STATE=!P10_STATE;
}

任务2、
左边数码管显示P32按下次数
右边数码管显示P33按下次数



#include "io.h"

u8 State1 = 0;                                        //LED1初始状态
u8 State2 = 0;                                        //LED2初始状态
u8 State3 = 0;                                        //LED3初始状态

u16 Key_Vol;                                //按键按下持续时间
u16 Key_Vol_2;

void LED0_Blink(void)
{
        State1 = !State1;
        P00 = State1;
}

void LED1_Blink(void)
{
        State2 = !State2;
        P01 = State2;
}

void LED2_Blink(void)
{
        State3 = !State3;
        P02 = State3;
}

u16  KEY1_COUNT = 0; //p32计数
u16  KEY2_COUNT = 0; //p33计数

void KEY_Task(void)
{
        //--------------p32按钮计数-----------
        if( P32 == 0 )
        {
                Key_Vol++;
                if( Key_Vol==5 )
                {
                        KEY1_COUNT++;
                        
                }
        }
        else
        {
                Key_Vol = 0;
        }
        
        //--------------p33按钮计数-----------
        if( P33 == 0 )
        {
                Key_Vol_2++;
                if( Key_Vol_2==5 )
                {
                        KEY2_COUNT++;
}
                }
                else        {
                Key_Vol = 0;
        }
        
}
        
u8 P2_STATE=0x01;
u8 P10_STATE=0;

//任务1:P2口流水灯,P10闪烁
void TASK_1( void )
        
{
        //------------------------P2端口流水灯---------------
         LED40_SetPort(2,~P2_STATE);              //点亮P20端口
        
        P2_STATE=(P2_STATE<<1);                //10000 0000->1 0000 0000
        if(P2_STATE ==0)
                P2_STATE=1;
        
        //------------------------P10端口闪烁---------------
        if (P10_STATE==0)

        LED40_SetBit(1,0);
        
else
        LED40_ClrBit(1,0);

P10_STATE=!P10_STATE;
}

u32 KEY_Count = 0;
//任务2、左边数码管显示P32按下次数,右边数码管显示P33按下次数

void TASK_2( void )
{
  KEY_Count=KEY1_COUNT*10000 + KEY2_COUNT;
SEG7_ShowLong(KEY_Count,10);
}
任务3:按下数字按键在数码管显示对应的按键数字!



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


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

extern u32   REC_NUM;


void main(void)
{
        Sys_init();                                                                                //系统初始化
        usb_init();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
        Timer0_Init();                                                                        //定时器初始化
    EA = 1;                                                                                        //IE |= 0X80;
        
        P40 = 0;
        
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        
        while(1)
        {
               
        if (bUsbOutReady)                                                        //如果接收到了数据
        {
                REC_NUM=UsbOutBuffer[5]-48;
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                        
            usb_OUT_done();                                                        //
        }
                Task_Pro_Handler_Callback();                                //执行功能函数

        }
}



void Timer0_Isr(void) interrupt 1                //1MS执行一次
{

        Task_Marks_Handler_Callback();                                        //系统计时

}



回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 11:14 , Processed in 0.191674 second(s), 96 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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