找回密码
 立即注册
查看: 562|回复: 12

我的学习打卡|实验箱已寄出

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-23 22:24:21 | 显示全部楼层 |阅读模式

第一集,认识单机片,没什么好打的,第二集,第一个LED,这个里面的内容有点多

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-30 10:27:09 | 显示全部楼层
微信图片_20241230101025.png

_______________________________________________________
虽然没给我实验箱,我这个也被 我搞坏了,申请实验箱,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-23 22:25:05 | 显示全部楼层

第三集,根着学的一个点亮一个led,程序 ,

  1. 打开Keil .点击 project 再点击 New uVision Project
  2. 将目录设定好,并输入项目名秒称
  3. 在弹出的窗口中,选,AI MCU Database
  4. 再选择单片机的型号,比如,AI8051 32bit
  5. 在source Group1,双击,或右击,Add existing files to Group
  6. 选择已完成的代码文件加入项目中
  7. 设置CPU的模式,在Ttarget1上右击,选Options for target"target 1"
  8. CPU Mode :source(251 native)&4 Byte interrupt frame size
  9. Memory Model : XSmal nearvars,far const,ptr-4
  10. 在Output 选项卡中,CREATE HEX File选中,建立HEX文件,HEX Format : hex-80

创建头文件

  1. 在单机片平台软件上获取头文件,ai8051u,保存到当前目录里面
  2. 源文件
  3. #include "AI8051U.h"
    void main(void)
    {
    P2M0=0x00;
    P2M1=0x00;
    while(1)
    {
    P21=0;​}
    }
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-23 23:20:20 | 显示全部楼层

第4集不停电USB下载,

USB不停电下载
1.下载所需文件(STC官网-软件工具-库函数-USB库文件)3.移植关键部分到工程:
3.1 添加头文件
3.2 USB初始化函数(tib+.h库实现)
3.3 命令参数
3.4 打开P SW2寄存器和IE2寄存器(只打开一个位!)

微信图片_20241228174058.png

|=

这里,的或运算,,,0000 0000

这里,的或运算,,,1000 0000

这里,的或运算,,,1000 0000 0x80

同等于EA=1

#include "AI8051U.h"
#include "stc32_stc8_usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
void main()
{
P_SW2 |= 0x80;

P2M0 = 0x00; P2M1 = 0x00; 

usb_init();                                     //USB CDC 接口配置
IE2|=0x80;
EA = 1;

while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置

while (1)
{
    if (bUsbOutReady)
    {
        USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
      
        usb_OUT_done();
    }
	P21=0;
}

}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-23 23:40:35 | 显示全部楼层
第4集跟着做了一遍

#include "ai8051u.h"                //µ÷ÓÃÍ·Îļþ
#include "stc32_stc8_usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//×¢Òâ£ºÇæÌìÖùµÄLED¶Ë¿ÚÔÚP2£¬ÇÒûÓÐÈý¼«¹ÜµÄµçÔ´¿ØÖÆ£¬ËùÒÔÖ»Òª¿ØÖÆP2¶Ë¿Ú¼´¿É
void main(void)
{
        P_SW2 |= 0x80;
   
    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 ½Ó¿ÚÅäÖÃ
         EA = 1;
          while (DeviceState != DEVSTATE_CONFIGURED);     //µÈ´ýUSBÍê³ÉÅäÖÃ
        while (1)
    {
        if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);   //·¢ËÍÊý¾Ý»º³åÇø£¬³¤¶È£¨½ÓÊÕÊý¾ÝÔ­Ñù·µ»Ø, ÓÃÓÚ²âÊÔ£©
            
            usb_OUT_done();
        }
                P20 = 0;        //P20¶Ë¿ÚÊä³ö0V
                //P21 = 0;
                P22 = 0;
                P27=0;                //P21¶Ë¿ÚÊä³ö0V
    }
}

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-27 17:20:53 | 显示全部楼层
第五集打卡
,C语言基础,以前学会,以为学了没什么用,现在,这不用上了


0为假,非0为真。



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

//注意:擎天柱的LED端口在P2,且没有三极管的电源控制,所以只要控制P2端口即可,本节课程的其余内容(C语言测试)均通用!

#define u8  unsigned char                //8位无符号变量(0-255)
#define u16 unsigned int                //16位无符号变量(0-65535)       
       
u16 X = 200;
u16 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);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
     
                        Y=(u16)UsbOutBuffer;
                        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();                                                        //
        }
               

        }
} 微信图片_20241228180332.png

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-27 23:45:56 | 显示全部楼层
消抖if(P32==0){
                                        Delay20ms();
                                        if(P32==0){
                                                P20=!P20; //直接取反
                                                while(P32==0);
                                                }
                                       
                                }       
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-27 23:46:17 | 显示全部楼层
第6集
gpio 的意思 ,自定义引角,
高低电平的标准,和VCC有关
io的工作模式,准双向口
推挽输出
高阻输入
开漏模式

微信图片_20241228181327.png 这里,检测,20毫秒



回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-28 00:19:36 | 显示全部楼层
第七集学的有点晕,先打个卡,明天再学一下#include "ai8051u.h"                //调用头文件
#include "stc32_stc8_usb.h"
#include "intrins.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//注意:擎天柱的LED端口在P2,且没有三极管的电源控制,所以只要控制P2端口即可

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中断
}




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();                                     //USB CDC 接口配置
         
        Timer0_Init();
        EA = 1;
          while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
        while (1)
    {
        if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            printf("STC YY???DS\r\n");
            usb_OUT_done();
        }
//                P20 = 0;        //P20端口输出0V
//           P22 = 0;
//                        if(P32==0){
//                        P21=0;
//                        }
////                        else {
//                                P21=1;}
                                if(P32==0){
                                        Delay20ms();
                                        if(P32==0){
                                                printf("按键按下次数\xfd:%d次\r\n",(int)count);
                                                count++;
                                                while(P32==0);
                                                }
                                       
                                }       
                               
    }
}
void Timer0_Isr(void) interrupt 1
{
        P20=!P20;
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-29 13:28:42 | 显示全部楼层
第七集,了解了FOR的用法   for(i=0,i<3,i++){}
创建.c .h文件,xxx.c xxx.h
调用,.h
#ifndef __XXX_H
#define __XXX_H

#endif
.c ,先在项目里添加xxx.c文件
#include "xxx.h"
然后在main.c里也要调用
#include "xxx.h
"
每次新建文件夹都是子文件夹,要在魔术棒里,C251,项目路径添加上此路径不然报错,
QQ图片20241229132235.png


结构体数组的周斯性任务调度
typedef struct
{
u8 Run; //任务状态:Run/Stop
u16 TIMCount; //定时计数器
u16 TRLTime;  /重载计数器
void(*TaskHook)(void); //任务函数
}TASK_COMPONENTS;
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:8
  • 最近打卡:2025-01-06 14:49:56
已绑定手机

1

主题

15

回帖

77

积分

注册会员

积分
77
发表于 2024-12-29 13:32:24 | 显示全部楼层
这第8集,难度直线上升
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-6 21:51 , Processed in 0.126927 second(s), 113 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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