辞727 发表于 2024-4-7 20:21:30

神农鼎 发表于 2023-1-6 19:20
必须组织学习,集中观摩,记录学习心得,全球 32位8051 筑基 新篇章
下图是 屠龙刀-STC32G12K128核心功能实 ...

来学习了

科学妞妞 发表于 2024-4-8 07:23:20

来学习了

科学妞妞 发表于 2024-4-11 11:00:33

大侠们,帮找错误来,用ADC控制LED闪烁延时的例子
#include <STC32G.H>

typedef unsigned char u8;                                        //unsigned char 用 u8 表示
typedef unsigned int u16;                                        //unsigned int 用 u16 表示
typedef unsigned long int u32;                //unsigned long int 用 u32 表示

#define MAIN_Fosc35000000UL                //定义主频 35MHz,请按实际频率修改(用于delay函数自适应主频)

#define ON         0                                //定义0 为 开
#define        OFF        1                                //定义1 为 关

sbit LED1 = P2^0;                //引脚定义:LED1->P20
P2M1 = 0x00;P2M0 = 0x00;                //设置P2口为准双向口模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出

sbit ADC_PIN=P1^0;//定义ADC引脚
P1M1 = 0xFF;P1M0 = 0x00;                //设置P1口为高阻输入模式 //00:准双向口 01:推挽输出 10:高阻输入 11:开漏输出

void init_adc()//初始化ADC
        {
    ADC_CHS = 0x00; // 设置ADC引脚为输入P1^0
    ADC_CONTR = 0x80; // 开启ADC,使用内部参考电压
}


unsigned int read_adc();    // 读取ADC值
void delay(unsigned int ms);// 延时函数


unsigned int read_adc() // 读取ADC值
        {
    unsigned int adc_value;
                ADC_RES = 0;
    ADC_RESL = 0;

    ADC_CONTR = (ADC_CONTR & 0xf0) | channel; //设置ADC转换通道
    ADC_START = 1;//启动ADC转换
    _nop_();// 等待转换完成
    _nop_();
    _nop_();
    _nop_();// 等待转换完成
    while(ADC_FLAG == 0);   //wait for ADC finish 结束转换
    ADC_FLAG = 0;   //清除ADC结束标志
    adc_value =(((u16)ADC_RES << 8) | ADC_RESL);// 读取ADC值
                return adc_value;
}
// 延时函数
void delay(unsigned int ms)
{
    unsigned int i, j;
    for (i = 0; i < ms; i++)
                {
      for (j = 0; j < 110; j++)
                        {
       _NOP_();}
    }
}

void main(void)
{
          WTST = 0;//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1; //扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度
       
                init_adc(); // 初始化ADC
          unsigned int adc_value;
    while (1)
                  {
       adc_value = ADC_RESL(); // 读取ADC值
       LED1 = ON;
                       delay(adc_value); // 根据ADC值控制延时
                       LED1 = OFF;
                       delay(adc_value); // 根据ADC值控制延时
      }
}       

ageway 发表于 2024-4-15 20:08:06

{:4_250:}

科学妞妞 发表于 2024-4-16 06:29:17

在学习中

shujing8827 发表于 2024-4-19 16:07:35

楼主这个教程还在更新中吗?

科学妞妞 发表于 2024-4-20 07:39:38

shujing8827 发表于 2024-4-19 16:07
楼主这个教程还在更新中吗?

在1盼更新

科学妞妞 发表于 2024-4-20 07:40:14

zhaoye818 发表于 2024-4-18 09:54
看了几集,短小精悍。赞

短小精悍,利于复习

zhangfuhg 发表于 2024-4-23 16:15:25

终于下载好了,谢谢楼主分享!

西红柿牛柳 发表于 2024-4-24 09:31:45

橘长威武,MARK一下,方便以后学习
页: 33 34 35 36 37 38 39 40 41 42 [43] 44 45 46 47 48 49 50 51 52
查看完整版本: 视频教程-32位8051-屠龙刀-第0-100期合集-布丁橘长