清风予我 发表于 2024-11-29 11:38:35

《8051U深度入门到32位51大型实战教学视频》之学习心得

第一集序
Ai8051U,USB 型 1T 8051,支持32位和8位指令集, RMB2.3
管脚兼容天王级别的:89C52RC,12C5A60S2
要兼容 8位8051指令集,可以用 Keil C51/IAR/SDCC 编译器
===就相当于更强大的 8H8K64U
要兼容 32位8051指令集,可以用 Keil C251 编译器,双核兼容设计
===就相当于更强大的 32G12K128, 32G8K64
34K SRAM(2K edata, 32K xdata), 64K Flash
TFPU@120MHz, 硬件浮点/硬件三角函数 运算器
DMA支持PWM, DMA支持外设直接到外设, P2P
120MHz-PWM支持硬件移相,16位PWM; 真12位ADC
USB, 4组串口,12位ADC, 轨到轨比较器
QSPI, SPI, I2S, I2C,TFT-i8080/M6800 接口
PDIP40,LQFP44,LQFP48

清风予我 发表于 2024-11-29 11:48:05

第二集硬件及工具介绍



跟着下载步骤说明,成功下载第一个程序

清风予我 发表于 2024-11-29 11:55:33

第三集点亮第一个LED






清风予我 发表于 2024-11-29 13:52:29

第四集USB不停电下载-----手敲代码,测试成功




清风予我 发表于 2024-11-29 16:15:18

第5集C语言基础,已手敲代码,测试通过



清风予我 发表于 2024-12-3 14:14:14

第六集 IO输入输出,手敲代码,测试成功







清风予我 发表于 2024-12-3 16:41:28

第七集 定时器中断 手敲代码,测试成功










清风予我 发表于 2024-12-9 11:15:19

第八集 定时器周期性调度任务学习程序 手敲代码,测试成功












清风予我 发表于 2024-12-24 14:53:08

第九集 数码管 手敲代码,测试成功
任务一:数码管静态的显示一个数字


任务二:显示“12345678”


任务三:显示时分秒






清风予我 发表于 2024-12-27 11:36:28

第十集 虚拟LED数码管,已手敲代码,编译通过
任务1: P2口流水灯,P10闪烁


#include "io.h"

u8 State1 = 0;                              //LED1初始状态
u8 State2 = 0;                              //LED2初始状态      
u8 State3 = 0;                              //LED3初始状态
u16 Key_Vol = 0;                        //按键按下持续时间

void LED0_Blink(void)
{
      State1 = !State1;
      P00 = State1;      
}

void LED1_Blink(void)
{
      State2 = !State2;
      P01 = State2;
}

void LED2_Blink(void)
{
      State3 = !State3;
      P02 = State3;
}

void KEY_Task(void)
{
      if( P32 == 0 )
      {
                Key_Vol++;
                if(Key_Vol==5)
                {
                //按键按下的任务
                        printf("按键单击\r\n");
                }
      }
      else
      {
                Key_Vol = 0;
      }
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;

//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//-----------      p2端口流水灯-----------
      LED40_SetPort(2,~P2_STATE);                                        //点亮P20端口
      
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE == 0)
         P2_STATE = 1;
//-----------   P10闪烁--------------
      if(P10_STATE == 0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      
      P10_STATE = !P10_STATE;      
}

任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数


#include "io.h"

u8 State1 = 0;                              //LED1初始状态
u8 State2 = 0;                              //LED2初始状态      
u8 State3 = 0;                              //LED3初始状态

u16 Key_Vol;                        //按键按下持续时间
u16 Key_Vol_2;                        //按键按下持续时间

void LED0_Blink(void)
{
      State1 = !State1;
      P00 = State1;      
}

void LED1_Blink(void)
{
      State2 = !State2;
      P01 = State2;
}

void LED2_Blink(void)
{
      State3 = !State3;
      P02 = State3;
}

u16 KEY1_COUNT = 0;                              //P32按钮计数
u16 KEY2_COUNT = 0;

void KEY_Task(void)
{
//----------P32按钮计数----------
      if( P32 == 0 )
      {
                Key_Vol++;
                if(Key_Vol==5)
                {
                        KEY1_COUNT++;
                }
      }
      else
      {
                Key_Vol = 0;
      }
//----------P33按钮计数----------
                if( P33 == 0 )
      {
                Key_Vol_2++;
                if(Key_Vol_2==5)
                {
                        KEY2_COUNT++;
                }
      }
      else
      {
                Key_Vol_2 = 0;
      }
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;

//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//-----------      p2端口流水灯-----------
      LED40_SetPort(2,~P2_STATE);                                        //点亮P20端口
      
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE == 0)
         P2_STATE = 1;
//-----------   P10闪烁--------------
      if(P10_STATE == 0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      
      P10_STATE = !P10_STATE;      
}
u32 KEY_Count = 0;

//任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
void TASK_2(void)
{
      KEY_Count = KEY1_COUNT *10000+KEY2_COUNT;
      
      SEG7_ShowLong( KEY_Count,10 );
}

任务3:按下数字按键在数码管显示对应的按键数字



#include "io.h"

u8 State1 = 0;                              //LED1初始状态
u8 State2 = 0;                              //LED2初始状态      
u8 State3 = 0;                              //LED3初始状态

u16 Key_Vol;                        //按键按下持续时间
u16 Key_Vol_2;                        //按键按下持续时间

void LED0_Blink(void)
{
      State1 = !State1;
      P00 = State1;      
}

void LED1_Blink(void)
{
      State2 = !State2;
      P01 = State2;
}

void LED2_Blink(void)
{
      State3 = !State3;
      P02 = State3;
}

u16 KEY1_COUNT = 0;                              //P32按钮计数
u16 KEY2_COUNT = 0;

void KEY_Task(void)
{
//----------P32按钮计数----------
      if( P32 == 0 )
      {
                Key_Vol++;
                if(Key_Vol==5)
                {
                        KEY1_COUNT++;
                }
      }
      else
      {
                Key_Vol = 0;
      }
//----------P33按钮计数----------
                if( P33 == 0 )
      {
                Key_Vol_2++;
                if(Key_Vol_2==5)
                {
                        KEY2_COUNT++;
                }
      }
      else
      {
                Key_Vol_2 = 0;
      }
}

u8 P2_STATE = 0x01;
u8 P10_STATE = 0;
//任务1:P2口流水灯,P10闪烁
void TASK_1(void)
{
//-----------      p2端口流水灯-----------
      LED40_SetPort(2,~P2_STATE);                                        //点亮P20端口
      
      P2_STATE = (P2_STATE<<1);
      if(P2_STATE == 0)
         P2_STATE = 1;
//-----------   P10闪烁--------------
      if(P10_STATE == 0)
                LED40_SetBit(1,0);
      else
                LED40_ClrBit(1,0);
      
      P10_STATE = !P10_STATE;      
}

u32 KEY_Count = 0;
//任务2:左边数码管显示P32按下次数,右边数码管显示P33按下次数
void TASK_2(void)
{
      KEY_Count = KEY1_COUNT *10000+KEY2_COUNT;
      
      SEG7_ShowLong( KEY_Count,10 );
}

u32 REC_NUM = 0;
//任务3:按下数字按键在数码管显示对应的按键数字
void TASK_3(void)
{
                SEG7_ShowLong( REC_NUM,10 );
}







页: [1] 2
查看完整版本: 《8051U深度入门到32位51大型实战教学视频》之学习心得