找回密码
 立即注册
楼主: admin

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

   火... [复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-05-02 14:38:08

0

主题

7

回帖

52

积分

注册会员

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

打卡第二集

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

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-03-29 17:35:27

7

主题

62

回帖

537

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:223
  • 最近打卡:2025-07-03 10:42:01

1

主题

65

回帖

427

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2024-05-09 10:25:41

0

主题

20

回帖

94

积分

注册会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:477
  • 最近打卡:2025-07-03 14:23:49

4

主题

510

回帖

2253

积分

金牌会员

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

确实资料好
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:318
  • 最近打卡:2025-07-03 10:23:23
已绑定手机

0

主题

28

回帖

730

积分

高级会员

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

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

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-05-09 16:57:48

0

主题

7

回帖

48

积分

新手上路

积分
48
发表于 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;
以设置最高优先级。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:13
  • 最近打卡:2024-05-09 10:25:41

0

主题

20

回帖

94

积分

注册会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:290
  • 最近打卡:2025-07-01 07:55:34
已绑定手机

1

主题

16

回帖

536

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:290
  • 最近打卡:2025-07-01 07:55:34
已绑定手机

1

主题

16

回帖

536

积分

高级会员

积分
536
发表于 2024-4-26 17:26:53 来自手机 | 显示全部楼层
第二课看完了,实验箱图片我没有看到can接口,学完后想用板子做一个无线遥控器诊断仪
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-7-3 22:22 , Processed in 0.122534 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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