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

【大文哥学习32位8051】20230704【冲哥视频】第五集的学习困惑(虚拟串口 & 测试版本)

[复制链接]

6

主题

3

回帖

56

积分

注册会员

积分
56
发表于 2023-7-4 19:47:49 | 显示全部楼层 |阅读模式
20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)
06第五集:C语言运算符和进制数入门上.mp4
07第五集:C语言运算符和进制数入门下.mp4


【大文哥学习32位8051】20230704【冲哥视频】第五集的学习困惑
2023/7/4 19:00


下次 在【冲哥】录视频的时候 。建议在 WIN10 WIN11正式版本下录制。老用 测试版本。比尔·盖茨 看见了会有意见的!

版权页3.png



ASC码表:

ASC2.jpg





0、
https://www.stcai.com/syx
实验箱

STC32G实验箱9.6
主控芯片使用STC32G12K128,可以做示波器、波形发生器、TFT彩屏显示、OLED 12864、LCD 12864

代码下载
使用说明 STC32G12K128实验箱-V9.6使用说明书.pdf
原理图


STC32G12K128实验箱-V9.6使用说明书.pdf





例程01:
02 QQ图片20230704185445.png



#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //三极管控制引脚
//sbit P60 = P6^0;        //LED控制引脚
//sbit P61 = P6^1;        //LED控制引脚

void sys_init();        //函数声明

void main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
        EA = 1;                                        //CPU开放中断,打开总中断。
       
        while(1)                //死循环
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        //printf("%03.3f\r\n",1.12);
                        //printf("%u \r\n",1<<3);
                       
                        printf("Hello World!");
                }
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}


void sys_init()                //函数定义
{
    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;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;

    P3M0 &= ~0x03;
    P3M1 |= 0x03;

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

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}


串口打印:
[17:57:30.369]发送→1
[17:57:30.384]接收←Hello World!

[17:57:30.369]发送→31
[17:57:30.384]接收←48 65 6C 6C 6F 20 57 6F 72 6C 64 21
03 QQ图片20230704185456.png






例程02:
06 QQ图片20230704185532.png




#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //三极管控制引脚
//sbit P60 = P6^0;        //LED控制引脚
//sbit P61 = P6^1;        //LED控制引脚

void sys_init();        //函数声明

void main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
        EA = 1;                                        //CPU开放中断,打开总中断。
       
        while(1)                //死循环
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        //printf("%03.3f\r\n",1.12);
                        //printf("%u \r\n",1<<3);
                       
                        //printf("Hello World!");
                        printf("当前温度:%.2f\r\n", 11.2);
                }
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}


void sys_init()                //函数定义
{
    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;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;

    P3M0 &= ~0x03;
    P3M1 |= 0x03;

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

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}



串口打印:
[18:06:02.284]发送→1
[18:06:02.293]接收←当前温度:11.20

[18:06:02.284]发送→31
[18:06:02.293]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 0D
                    0A
07 QQ图片20230704185539.png






例程03:
11 QQ图片20230704185551.png



#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //三极管控制引脚
//sbit P60 = P6^0;        //LED控制引脚
//sbit P61 = P6^1;        //LED控制引脚

void sys_init();        //函数声明

void main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
        EA = 1;                                        //CPU开放中断,打开总中断。
       
        while(1)                //死循环
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        //printf("%03.3f\r\n",1.12);
                        //printf("%u \r\n",1<<3);
                       
                        //printf("Hello World!");
                        //printf("当前温度:%.2f\r\n", 11.2);
                        printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);
                }
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}


void sys_init()                //函数定义
{
    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;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;

    P3M0 &= ~0x03;
    P3M1 |= 0x03;

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

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}




串口打印:
[18:21:38.277]发送→1
[18:21:38.284]接收←当前温度:11.20, 当前湿度:55.20

[18:21:38.277]发送→31
[18:21:38.284]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 2C
                    20 B5 B1 C7 B0 CA AA B6 C8 A3 BA 35 35 2E 32 30
                    0D 0A
12 QQ图片20230704185607.png






例程04:
16 QQ图片20230704185658.png



#include "COMM/stc.h"                //调用头文件
#include "COMM/usb.h"

char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
       
//sbit P40 = P4^0;        //三极管控制引脚
//sbit P60 = P6^0;        //LED控制引脚
//sbit P61 = P6^1;        //LED控制引脚

void sys_init();        //函数声明

void main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        usb_init();                                //usb库初始化
        EA = 1;                                        //CPU开放中断,打开总中断。
       
        while(1)                //死循环
        {
                if( DeviceState != DEVSTATE_CONFIGURED )         //
                        continue;
                if( bUsbOutReady )                                                               
                {
                        usb_OUT_done();
                        //printf("%03.3f\r\n",1.12);
                        //printf("%u \r\n",1<<3);
                       
                        //printf("Hello World!");
                        //printf("当前温度:%.2f\r\n", 11.2);
                        //printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);
                       
                        printf("%u\r\n", 53);
                }
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                P61 = 0;        //led5引脚输出低电平
        }
}


void sys_init()                //函数定义
{
    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;   //设置为准双向口
       
    P3M0 = 0x00;
    P3M1 = 0x00;

    P3M0 &= ~0x03;
    P3M1 |= 0x03;

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

    USBCLK = 0x00;        //使用CDC功能需要使用这两行,HID功能禁用这两行。
    USBCON = 0x90;
}




串口打印:
[18:30:16.453]发送→1
[18:30:16.459]接收←53


[18:30:16.453]发送→31
[18:30:16.459]接收←35 33 0D 0A
17 QQ图片20230704185706.png








例程05:
07第五集:C语言运算符和进制数入门下.mp4_20230704_182243.273.jpg


07第五集:C语言运算符和进制数入门下.mp4_20230704_183214.760.jpg



例程06:
07第五集:C语言运算符和进制数入门下.mp4_20230704_183242.094.jpg


07第五集:C语言运算符和进制数入门下.mp4_20230704_183246.255.jpg



例程07:
07第五集:C语言运算符和进制数入门下.mp4_20230704_183311.917.jpg


07第五集:C语言运算符和进制数入门下.mp4_20230704_183315.205.jpg



例程08:
07第五集:C语言运算符和进制数入门下.mp4_20230704_183513.536.jpg


07第五集:C语言运算符和进制数入门下.mp4_20230704_183516.251.jpg




参考资料:
http://stcmcudata.com/
https://www.stcai.com/jxsp
演示视频
实验箱-STC32G12K128 教学视频
屠龙刀-STC32G12K128 教学视频





版权页.png
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 00:54 , Processed in 0.169107 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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