langshuang 发表于 2023-10-28 11:32:17

电子DIY小家 发表于 2023-10-27 20:52
我是从历程包里复制出来的,你也可以从我的历程包里复制出来

冲哥,我从71项目STC32G-DEMO-CODE-20230309\71-基于HID协议的USB键盘范例\src中复制出来usb.h config.h stc.h 之后还是报错呢


#include "stc.h"
#include "usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCIPCM = "@STCISP#";
// port
sfr P4 = 0xc0;
sfr P4M0 = 0xb4;
sfr P4M1 = 0xb3;
sfr P6 = 0xe8;
sfr P6M0 = 0xcc;
sfr P6M1 = 0xcb;

// foot
sbit P40 = P4^0;
sbit P60 = P6^0;

void main()
{
        //sys_init()
        usb_init();
        EA = 1;
       
        P4M0 = 0x00;
        P4M1 = 0x00;
        P6M0 = 0x00;
        P6M1 = 0x00;
       
        while(1)
        {
                P40 = 0;
                P60 = 0;
        }
}

gentleman 发表于 2023-10-28 13:02:15

langshuang 发表于 2023-10-28 11:32
冲哥,我从71项目STC32G-DEMO-CODE-20230309\71-基于HID协议的USB键盘范例\src中复制出来usb.h config.h...


加这个

langshuang 发表于 2023-10-28 17:17:40

#include "stc.h"
#include "usb.h"

void sys_init();

//USB调试及复位所需定义
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";   
// port
sfr P4 = 0xc0;
sfr P4M0 = 0xb4;
sfr P4M1 = 0xb3;
sfr P6 = 0xe8;
sfr P6M0 = 0xcc;
sfr P6M1 = 0xcb;


// foot
sbit P40 = P4^0;
sbit P60 = P6^0;
sbit P61 = P6^1;
void main()
{
        //sys_init()
        usb_init();
        EA = 1;
       
        P4M0 = 0x00;
        P4M1 = 0x00;
        P6M0 = 0x00;
        P6M1 = 0x00;
       
        while(1)
        {
                P40 = 0;
                P60 = 0;
                P61 = 0;
        }
}

void sys_init()
{
    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P0M1 = 0x30;   P0M0 = 0x30;   //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P1M1 = 0x32;   P1M0 = 0x32;   //设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3
    P2M1 = 0x3c;   P2M0 = 0x3c;   //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻
    P3M1 = 0x50;   P3M0 = 0x50;   //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
    P4M1 = 0x3c;   P4M0 = 0x3c;   //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
    P5M1 = 0x0c;   P5M0 = 0x0c;   //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
    P6M1 = 0xff;   P6M0 = 0xff;   //设置为漏极开路(实验箱加了上拉电阻到3.3V)
    P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口

    //设置USB使用的时钟源
    IRC48MCR = 0x80;    //使能内部48M高速IRC
    while (!(IRC48MCR & 0x01));//等待时钟稳定
}

以上代码还是报错 已经添加了那个选项, 我上传整个项目文件了,辛苦冲哥再帮忙看看哪里出错了

langshuang 发表于 2023-10-28 19:14:12

冲哥,71工程编译报这个limit应该怎么解决啊~

langshuang 发表于 2023-10-28 19:15:37

冲哥,我自己写的这个包没有这个变量



/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com---------------------------------------*/
/* --- QQ:800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序      */
/*---------------------------------------------------------------------*/

/*************功能说明    **************

本例程基于STC32G为主控芯片的实验箱进行编写测试。

使用Keil C251编译器,Memory Model推荐设置XSmall模式,默认定义变量在edata,单时钟存取访问速度快。

edata建议保留1K给堆栈使用,空间不够时可将大数组、不常用变量加xdata关键字定义到xdata空间。

基于HID协议的USB键盘范例

将代码下载到试验箱后即可实现USB键盘的基本功能
跑马灯中的LED17为NumLock灯、LED16为CapsLock灯、LED15为ScrollLock灯
矩阵按键中的KEY0~KEY7分别为键盘中的1~8

下载时, 设置IRC工作频率为 24MHz.

******************************************/

#include "stc.h"
#include "usb.h"
#include "usb_req_class.h"
#include "timer.h"

void sys_init();

void main()
{
    sys_init();
    usb_init();
    timer_init();

    EA = 1;
   
    while (1)
    {
      usb_class_in();
      
      if (f1ms)
      {
            f1ms = 0;
            scan_key();
      }
    }
}

void sys_init()
{
    WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度

    P3M0 &= ~0x03;
    P3M1 |= 0x03;
   
    IRC48MCR = 0x80;
    while (!(IRC48MCR & 0x01));
   
    USBCLK = 0x00;
    USBCON = 0x90;
}


电子DIY小家 发表于 2023-10-30 09:19:30

langshuang 发表于 2023-10-28 19:14
冲哥,71工程编译报这个limit应该怎么解决啊~

软件po解一下

电子DIY小家 发表于 2023-10-30 09:23:04

langshuang 发表于 2023-10-28 19:15
冲哥,我自己写的这个包没有这个变量






这个变量在USB.H里面,你看下你的USB.h文件里有没有他,这个头文件调用了没有

电子DIY小家 发表于 2023-10-30 09:23:52

langshuang 发表于 2023-10-28 17:17
#include "stc.h"
#include "usb.h"



工程参数设置下

langshuang 发表于 2023-10-30 18:58:43

电子DIY小家 发表于 2023-10-30 09:23
工程参数设置下

谢谢冲哥,大佬威武~~~又遇到新问题了,视频里这个bUsbOutReady 这个变量是在哪个头文件里定义的啊,我学到printhelloworld那里报没有定义这个变量

langshuang 发表于 2023-10-30 19:17:09

langshuang 发表于 2023-10-30 18:58
谢谢冲哥,大佬威武~~~又遇到新问题了,视频里这个bUsbOutReady 这个变量是在哪个头文件里定义的啊,我学 ...

找到了 在76项目里
页: 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28
查看完整版本: 冲哥32位8051视频教程疑问解答贴