找回密码
 立即注册
查看: 153|回复: 0

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

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:142
  • 最近打卡:2025-04-27 09:42:20

11

主题

157

回帖

1782

积分

版主

积分
1782
发表于 2024-12-28 11:58:36 | 显示全部楼层 |阅读模式
第三集 擎天柱点亮LED灯,测试通过:
截图202501141531208966.jpg
截图202412281144236538.jpg
代码:

#include "ai8051u.h"                //调用头文件

void main(void)
{
        P2M0 = 0;                //P2端口(P20-P27)为准双向口
        P2M1 = 0;
        
        while(1)
        {
                P20 = 0;        //P20端口输出0V
                P21 = 0;        //P21端口输出0V
        }
}

AI8051U教学视频第3集点亮第一颗LED手敲程序 擎天柱版本.zip (42.48 KB, 下载次数: 7)

第四集 擎天柱USB-CDC 不停电下载,测试通过:
截图202501141534408838.jpg

代码

#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件

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

void main(void)
{
    P_SW2 |= 0x80;                //B7位写1,使能访问XFR
        
    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();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;                                                                                        //IE |= 0X80;
        
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        
        while(1)
        {
               
        if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            
            usb_OUT_done();
        }
               
                P20 = 0;                                        //P00端口输出0V
                P22 = 0;                                        //P02端口输出0V

        }
}
AI8051U教学视频第4集USB不停电下载手敲程序.zip (89.34 KB, 下载次数: 4)


第五集:擎天柱 C语言基础,测试通过:

截图202501141548594852.jpg

main.c代码:


#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件

#define u8  unsigned char               
#define u16 unsigned int               
        
u8 X = 200;
u8 Y = 10;

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

void main(void)
{
    P_SW2 |= 0x80;                //B7位写1,使能访问XFR
        
    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();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;                                                                                        //IE |= 0X80;
        
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        
        while(1)
        {
               
        if (bUsbOutReady)                                                        //如果接收到了数据
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度
            
                        if( X && Y )        
                        {
                                printf("条件为真\r\n");
                        }
//                        else
//                        {
//                                printf("条件为假\r\n");
//                        }
                                
//                        printf("X / Y = %u \r\n",(u16)(X/Y));
                        
//                        printf("X %% Y = %u \r\n",(u16)(X%Y));
                        
            usb_OUT_done();                                                        
        }
               

        }
}
AI8051U教学视频第5集C语言基础手敲程序 擎天柱版本.zip (93.13 KB, 下载次数: 6)
第六集:擎天柱IO输入输出,测试通过
截图202501141553091808.jpg
main.c 代码

#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件
#include "intrins.h"                        //d调用头文件

#define u8  unsigned char               
#define u16 unsigned int               
        
u8 state = 0;                                       

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

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

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


void main(void)
{
    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();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;                                                                                        //IE |= 0X80;
        
        while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        
        while(1)
        {
               
        if (bUsbOutReady)                                                        //如果接收到了数据
        {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            
            usb_OUT_done();                                                        //
        }
               
//                //任务1:按下P32按钮灯亮,松开P32按钮灯灭;
//                if( P32 == 0 )                                                                //判断P32按钮是否按下
//                {
//                        P20 = 0;
//                }
//                else
//                {
//                        P20 = 1;
//                }
//               
               
                //任务2:按下P32按钮灯灭,松开P32按钮灯亮;
//                if( P32 == 1 )                                                                //判断P32按钮是否按下
//                {
//                        P20 = 0;
//                }
//                else
//                {
//                        P20 = 1;
//                }
               
                //任务3:按一下灯亮,按一下灯灭
                if( P32 == 0 )                                                                //判断P32按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P32 == 0 )
                        {
                                state = !state;                                                //变量取反 0 1 0 1 0 1
                                P20 = state;
                                printf("state:%d\r\n",(int)state);
                                
                                while( P32 == 0 );                                        //等待P32松开
                                
                        }
                }
        
               
        }
}

AI8051U教学视频第6集IO输入输出手敲程序 擎天柱版本.zip (89.47 KB, 下载次数: 5)









回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-7 03:26 , Processed in 0.104121 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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