找回密码
 立即注册
楼主: ad***

视频教学:《STC32位8051单片机原理及应用》,200万大奖, 送实验箱; 冲哥版

   火... [复制链接]
  • TA的每日心情
    奋斗
    2024-5-2 14:38
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    0

    主题

    7

    回帖

    52

    积分

    注册会员

    积分
    52
    发表于 2024-4-25 12:13:14 | 显示全部楼层
    本帖最后由 新学多照 于 2024-4-28 15:19 编辑

    打卡第二集

    微信截图_20240425121216.png
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    6 小时前
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    2

    主题

    28

    回帖

    170

    积分

    注册会员

    积分
    170
    发表于 2024-4-25 15:22:22 | 显示全部楼层
    第十一-十二集 定时计数器打卡滴滴滴 好好好开始上难度了 脑子不太好使
    STC32G128K芯片学习打卡贴
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7834
    (出处: 国芯技术交流网站)
    好好学习天天向上
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    1

    主题

    49

    回帖

    207

    积分

    中级会员

    积分
    207
    发表于 2024-4-25 18:09:02 | 显示全部楼层
    跟冲哥学习STC32G128K芯片打卡  持续更新 期待 实验箱的实物验证
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7996
    (出处: 国芯技术交流网站)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 37 天

    [LV.5]常住居民I

    2

    主题

    200

    回帖

    567

    积分

    高级会员

    积分
    567
    发表于 2024-4-25 19:11:21 | 显示全部楼层
    深度陶醉 发表于 2024-4-17 11:35
    经过15节课的理论学习,今天终于收到实验箱,可以进行实践学习和验证了。感谢冲哥和平台 ...

    客服让我发打卡链接,请问您是怎么发的?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-9 10:25
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    94

    积分

    注册会员

    积分
    94
    发表于 2024-4-26 08:05:48 | 显示全部楼层
    打卡第九集
    截图202404260805438728.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 89 天

    [LV.6]常住居民II

    2

    主题

    211

    回帖

    334

    积分

    中级会员

    积分
    334
    发表于 2024-4-26 09:12:34 | 显示全部楼层
    zhaoye818 发表于 2024-4-24 21:16
    第十五集学习笔记:1.中断和中断系统 2.什么是外部中断 3.外部中断的用法 INT0的程序。STC的资料真的很实用 ...

    确实资料好
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    7 小时前
  • 签到天数: 41 天

    [LV.5]常住居民I

    0

    主题

    18

    回帖

    210

    积分

    中级会员

    积分
    210
    发表于 2024-4-26 10:55:36 | 显示全部楼层
    zhaoye818 发表于 2024-4-25 19:11
    客服让我发打卡链接,请问您是怎么发的?

    如下图,到你的回复消息页面,将所有培训的回复载图给客服就可以了

    截图202404261054014795.jpg
    回复 支持 1 反对 0 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-9 16:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    7

    回帖

    42

    积分

    新手上路

    积分
    42
    发表于 2024-4-26 11:16:46 | 显示全部楼层
    本帖最后由 bnnpyuvtkd 于 2024-4-26 11:42 编辑

    今天跳到第16讲:IO口中断
    IO口中断是STC32G单片机特有的中断,是宏晶公司独创的
            第16讲:IO中断
            IO中断是STC32G特有的内部中断,下面编写IO中断程序。
            打开示例程序第11(外部中断)的程序,主程序是Demo.c ,如下:

    #include "COMM/stc.h"                //调用头文件
    #include "COMM/usb.h"
    #include "seg_led.h"
    #include "key.h"
    #include "beep.h"
    #include "tim0.h"
    #include "exit.h"


    #define MAIN_Fosc 24000000UL        //定义主时钟

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

    bit  TIM_10MS_Flag;                        //10ms的标志位

    void sys_init();        //函数声明
    void delay_ms(u16 ms);        //unsigned int


    void main()                                        //程序开始运行的入口
    {
            u8 i;
            u8 KEY_NUM = 0;                        //保存矩阵按键的键码
            u8 KEY_Str = 0;                        //表示当前输入了几个密码位
            
            sys_init();                                //USB功能+IO口初始化
            usb_init();                                //usb库初始化

            Timer0_Init();                        //定时器0初始化
            INT0_Init();                        //外部中断0初始化
            
            EA = 1;                                        //CPU开放中断,打开总中断。
            
            SEG0 = 0;
            SEG1 = 0;
    //        SEG2 = 2;
    //        SEG3 = 3;
    //        SEG4 = 4;
    //        SEG5 = 5;
    //        SEG6 = 6;
    //        SEG7 = 7;
            
            LED = 0xff;                                //初始状态熄灭所有LED
            
            while(1)                //死循环
            {
                    if( DeviceState != DEVSTATE_CONFIGURED )         //
                            continue;
                    if( bUsbOutReady )                                                               
                    {
                            usb_OUT_done();
                    }
                   

                    for(i=0;i<8;i++)                //循环八次
                    {
                            LED = ~(1<<i);                //当前i是几,就点亮第几个LED
                            delay_ms(500);                //验收500ms
                    }
                    if( P33 ==0 )                        //如果P33按下了
                            SEG1 += 1;                        //数码管1的数值+1
                   
            }
    }

    void INT0_Isr(void) interrupt 0
    {
            SEG0 += 1;                                        //数码管0的数值+1
    }


    void Timer0_Isr(void) interrupt 1
    {
            static timcount = 0;
            
            SEG_LED_Show();                        //数码管刷新的
            
            timcount++;                                //1ms+1
            if( timcount>=10 )                //如果这个变量大于等于10,10ms计数到达
            {
                    timcount = 0;
                    TIM_10MS_Flag = 1;        //10ms时间到了
            }
    }


    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;
    }


    void delay_ms(u16 ms)        //unsigned int
    {
            u16 i;
            do
            {
                    i = MAIN_Fosc/6000;
                    while(--i);
            }while(--ms);
    }

            中断优先级的设置
            编写P35口的IO中断,中断改变SEG0的数值(显示0--9),延时500ms ,观察定时器刷新数码管,数码管一个一个刷新过去,SEG0显示也会自加。
            在Demo.c里编写中断函数
    void P3Exit_Isr(void) interrupt 40
    {
            u8 intf;
            intf = P3INTF;                                //读取状态标志,必须软件清空
            if(intf)
            {
                    P3INTF = 0;                                //清空中断标志位
                    if(intf & 0x20)                        //P35按下
                    {
                            SEG0++;                                //这边是数码管循环显示0-9
                            if(SEG0 > 9)
                                    SEG0 = 0;
                            delay_ms(500);                //这边是为了演示一个功能,大家正式写代码千万不能在中断里加延时
                    }
            }
    }

    第40号大于31,而keil只能有32(0~31)个中断号,为了多运行中断号,要运行一个增加中断号的“拓展Keil的C代码中断号”软件,之后keil的中断号就扩展到了256个。

    还要在tim0.c里的“void Timer0_Init(void)”函数中添加
    IP = 0X02;
    IPH = 0X02;
    以设置最高优先级。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-5-9 10:25
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    0

    主题

    20

    回帖

    94

    积分

    注册会员

    积分
    94
    发表于 2024-4-26 15:47:41 | 显示全部楼层
    打卡第十集
    截图202404261547406111.jpg
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 06:28
  • 签到天数: 21 天

    [LV.4]偶尔看看III

    4

    主题

    11

    回帖

    130

    积分

    注册会员

    积分
    130
    发表于 2024-4-26 16:52:01 来自手机 | 显示全部楼层
    已经买了屠龙刀开始学习
    1000048690.jpg
    回复 支持 反对 送花

    使用道具 举报

    高级模式
    B Color Image Link Quote Code Smilies |上传

    本版积分规则

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

    GMT+8, 2024-5-18 16:39 , Processed in 0.076302 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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