wb4916 发表于 2023-7-3 21:17:15

【大文哥学习32位8051】20230703【冲哥视频】第四集的学习困惑【乱序编号】&心得【GPI



【大文哥学习32位8051】20230703【冲哥视频】第四集的学习困惑【乱序编号】&心得【GPIO操作】
2023/7/3 20:41


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

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

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















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

8个跑马灯附近的原理图:
【原理图的LED灯的器件号码LED0-7顺序编号是一个好习惯,不知道STC宏晶的硬件layout工程师有什么特别的理由?!】
也许乱序编号可能有特别的理由!所有的现代高速CPU都是指令乱序执行的!比如:x86/x64/arm64等架构的CPU。
(并且匹配:抢占式的操作系统,比如:win7/win10/Ubuntu22.04等)

V9.4版本
      



V9.6版本





2、点单灯:



sfr P0 = 0X80;
sfr P0M1 = 0X93;
sfr P0M0 = 0X94;


sfr P4 = 0XC0;//初始化P4组GPIO引脚为GPIO功能
sfr P4M1 = 0XB3;
sfr P4M0 = 0XB4;

sfr P6 = 0XE8;//初始化P6组GPIO引脚为GPIO功能
//sfr P6M1 = 0XC8;
sfr P6M1 = 0XCB;
sfr P6M0 = 0XCC;

sbit P40 = P4^0;//三极管控制引脚
sbit P60 = P6^0;//LED控制引脚

void main()
{
        //P0M0 = 0X00;       
        //P0M1 = 0X00;
       
        P4M1 = 0X00;
        P4M0 = 0X00;
       
        P6M1 = 0X00;
        P6M0 = 0X00;
       
        while(1)
        {
                //P0++;
                P40 = 0;//三极管引脚输出低电平
                P60 = 0;//led0引脚输出低电平
        }
}







3、间隔点灯:



sfr P4 = 0XC0;
//sfr P5 = 0XC0;
sfr P6 = 0XE8;

sfr P4M1 = 0XB3;
sfr P4M0 = 0XB4;

//sfr P6M1 = 0XC8;
sfr P6M1 = 0XCB;
sfr P6M0 = 0XCC;

sbit P40 = P4^0;        //三极管控制引脚
sbit P60 = P6^0;        //LED控制引脚
sbit P61 = P6^1;        //LED控制引脚
sbit P62 = P6^2;
sbit P63 = P6^3;
sbit P64 = P6^4;
sbit P65 = P6^5;
sbit P66 = P6^6;
sbit P67 = P6^7;
void sys_init();        //函数声明

void main()                                        //程序开始运行的入口
{
        sys_init();                                //USB功能+IO口初始化
        //usb_init();                                //usb库初始化
        //EA = 1;                                        //CPU开放中断,打开总中断。
       
                P40 = 0;        //三极管引脚输出低电平
                P60 = 0;        //led4引脚输出低电平
                //P61 = 0;        //led5引脚输出低电平
                P62 = 0;
                //P63 = 0;
                P64 = 0;
                //P65 = 0;
                P66 = 0;
                //P67 = 0;
               
        while(1)                //死循环
        {
                ;
        }
}


void sys_init()                //函数定义
{
    P4M1 = 0x00;   P4M0 = 0x00;   //设置为准双向口
    //P5M1 = 0x00;   P5M0 = 0x00;   //设置为准双向口
    P6M1 = 0x00;   P6M0 = 0x00;   //设置为准双向口
}





4、全部点亮LED:



//sfr P0 = 0X80;
//sfr P0M1 = 0X93;
//sfr P0M0 = 0X94;


sfr P4 = 0XC0;
sfr P4M1 = 0XB3;
sfr P4M0 = 0XB4;

sfr P6 = 0XE8;
//sfr P6M1 = 0XC8;
sfr P6M1 = 0XCB;
sfr P6M0 = 0XCC;

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

void main()
{
        //P0M0 = 0X00;       
        //P0M1 = 0X00;
       
        P4M1 = 0X00;
        P4M0 = 0X00;
        P6M1 = 0X00;
        P6M0 = 0X00;
       
                P40 = 0;
                P60 = 0;
       
        while(1)
        {
                //P0++;
                //P40 = 0;
                //P60 = 0;
               
                P6++;
                ;
        }
}







5、【经验】【冲哥】的视频中出错的部分可以直接剪辑掉的。
毕竟大家没有这么多时间来仔细查看调试记录的!




6、Keil V5.6的安装步骤:
先使用stc-isp-v6.91V.exe下载STC32G的DATASHEET:
资料下载←用户手册→STC32G系列用户手册

stc32g.pdf【加密了,不能复制!神奇呀!】


5 编译、仿真开发环境的建立与 ISP 下载
5.1 安装 Keil
5.1.1 安装 C251 编译环境
首先登录 Keil 官网,下载最新版的 C251 安装包,下载链接如下:
Keil Product Downloads
https://www.keil.com/download/product/
信息随便填写,点确定后进入下载页面进行下载。
双击下载的安装包开始安装, 点击“Next”:


C251
Version 5.60 (May 2018)
Development tools for all 80251 devices.


https://www.keil.com/fid/bdasrowb9c9j1wyawhw190xtewlvr1a9sd2wd1/files/eval/c251v560.exe
C251V560.EXE (46,528K)
Wednesday, May 9, 2018




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








清风予我 发表于 2023-7-4 10:59:12

楼主学习精神可嘉{:4_250:}小建议:学习心得可集中到一个帖子,方便最后学习总结
页: [1]
查看完整版本: 【大文哥学习32位8051】20230703【冲哥视频】第四集的学习困惑【乱序编号】&心得【GPI