每天不一YOUNG 发表于 2024-11-29 15:54:11

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

第3集已学习,已手敲代码,测试通过



每天不一YOUNG 发表于 2024-11-29 15:55:16


第4集已学习,已手敲代码,测试通过



每天不一YOUNG 发表于 2024-11-29 15:56:29

第5集已学习,已手敲代码,测试通过



每天不一YOUNG 发表于 2024-12-10 16:01:01

<p>第6集学习打卡</p>
<p><img src="data/attachment/forum/202412/10/160050s55rlltq0zar0ll8.png" alt="第6集代码.png" title="第6集代码.png" /></p>
<p><img src="data/attachment/forum/202412/10/160050at80memr9merlklm.png" alt="第6集实验箱.png" title="第6集实验箱.png" /></p>
<p>第6集代码:</p>
<p>#include &quot;ai8051u.h&quot; //调用头文件<br />
#include &quot;stc32_stc8_usb.h&quot;<br />
#include &quot;intrins.h&quot;//调用头文件<br />
#define u8 unsigned char//8位无符号变量(0-255)<br />
#define u16 unsigned int//16位无符号变量(0-65535)<br />
u8 state = 0;             // 初始状态<br />
char *USER_DEVICEDESC = NULL;<br />
char *USER_PRODUCTDESC = NULL;<br />
char *USER_STCISPCMD = &quot;@STCISP#&quot;;</p>
<p>void Delay20ms(void)      //@24.000MHz<br />
{<br />
unsigned long edata i;<br />
<em>nop</em>();<br />
<em>nop</em>();<br />
i = 119998UL;<br />
while (i) i--;<br />
}</p>
<p>void main(void)<br />
{<br />
WTST = 0;<br />
EAXFR = 1;<br />
CKCON = 0;<br />
P0M1 = 0x00;   P0M0 = 0x00;<br />
P1M1 = 0x00;   P1M0 = 0x00;<br />
P2M1 = 0x00;   P2M0 = 0x00;<br />
P3M1 = 0x00;   P3M0 = 0x00;<br />
P4M1 = 0x00;   P4M0 = 0x00;<br />
P5M1 = 0x00;   P5M0 = 0x00;<br />
P6M1 = 0x00;   P6M0 = 0x00;<br />
P7M1 = 0x00;   P7M0 = 0x00;</p>
<pre><code>usb_init();   
IE2 |= 0x80;                                          
EA = 1;                                                
    P40 = 0;                                             
    while (DeviceState != DEVSTATE_CONFIGURED);            
    while(1)                                             
    {                                                         
            if (bUsbOutReady)                                 
    {                                                
       // USB_SendData(UsbOutBuffer,OutNumber);                                                                                                   
      usb_OUT_done();            
    }            
                  if(P32 == 0)                                                                     //判断P32按钮是否按下
                  {
                            P00 = 0;
                  }
                  else
                  {
                            P00 = 1;
                  }
    }      
</code></pre>
<p>}</p>

每天不一YOUNG 发表于 2024-12-18 11:39:23

第7集打卡学习

程序:

#include "ai8051u.h" //调用头文件
#include "stc32_stc8_usb.h"
#include "intrins.h"//调用头文件
#define u8 unsigned char//8位无符号变量(0-255)
#define u16 unsigned int//16位无符号变量(0-65535)

u8 state = 0;             //初始状态
//u8 Run_State = 0;         //运行状态


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

void Delay20ms(void)    //@24.000MHz
{
    unsigned long edata i;

    _nop_();
    _nop_();
    i = 119998UL;
    while (i) i--;
}

void Timer0_Init(void)      //3秒@24.000MHz
{
    TM0PS = 0x5B;            //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
    AUXR &= 0x7F;            //定时器时钟12T模式
    TMOD &= 0xF0;            //设置定时器模式
    TL0 = 0x3F;                //设置定时初始值
    TH0 = 0x01;                //设置定时初始值
    TF0 = 0;                //清除TF0标志
    TR0 = 1;                //定时器0开始计时
    ET0 = 1;                //使能定时器0中断
    //TM0PS = 91;
    //12T/12
    // TH0-TL0=319
}




void main(void)
{
    int count = 1;                                              //按键计数
    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;
   
    usb_init();   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);            //等待USB完成配置
    while(1)                                                
    {                                                         
      if (bUsbOutReady)                                    //如果接收到了数据
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);         //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
                                                            
            usb_OUT_done();            
      }
   
             //任务1: LED灯三秒取反一次,这期间任意时刻按下按钮,串口打印按键次数
            if(P32 == 0)                                    //判断P32按钮是否按下
            {                                                
                Delay20ms();                                  //延时20ms消抖
                if( P32 == 0 )                              
                {                                             
               
                printf("按键按下次数\xfd:%d 次\r\n",(int)count);
                count++;
                while(P32 == 0);                              //等待P32松开
                }
            }
            
               
    }
}   
      
      

void Timer0_Isr(void) interrupt 1      //3秒执行一次
{
    state = !state;
   P00 = state;   
}




每天不一YOUNG 发表于 2024-12-20 13:50:38

第8集


#include "config.h"
#include "task.h"
#include "io.h"

u8 State={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;      
u8 num = 0;

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

void main(void)
{
    int count = 1;                                             
    Sys_init();       
    usb_init();      
        IE2 |= 0x80;
    Timer0_Init();
    EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);         
   
        while(1)                                                
    {                                                         
      if (bUsbOutReady)                              
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);      

            usb_OUT_done();            
      }
       Task_Pro_Handler_Callback();        
    }
   
}   

void Timer0_Isr(void) interrupt 1      
{
                Task_Marks_Handler_Callback();
               
}



每天不一YOUNG 发表于 2024-12-25 15:33:05

第9集手敲代码通过




#include "config.h"
#include "task.h"
#include "io.h"


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


void main(void)
{
        Sys_init();                                                                                //ϵͳ³õʼ»¯
        usb_init();                                     //USB CDC ½Ó¿ÚÅäÖÃ

    IE2 |= 0x80;                                    //ʹÄÜUSBÖжÏ
        Timer0_Init();                                                                        //¶¨Ê±Æ÷³õʼ»¯
    Init_595();
        EA = 1;                                                                                        //IE |= 0X80;
       
        P40 = 0;
       
        while (DeviceState != DEVSTATE_CONFIGURED);   //µÈ´ýUSBÍê³ÉÅäÖÃ
       
        while(1)
        {
               
      if (bUsbOutReady)                                                        //Èç¹û½ÓÊÕµ½ÁËÊý¾Ý
      {
            //USB_SendData(UsbOutBuffer,OutNumber);   //·¢ËÍÊý¾Ý»º³åÇø£¬³¤¶È£¨½ÓÊÕÊý¾ÝÔ­Ñù·µ»Ø, ÓÃÓÚ²âÊÔ£©
                       
            usb_OUT_done();                                                        //
      }
                Task_Pro_Handler_Callback();                                //Ö´Ðй¦Äܺ¯Êý

        }
}



void Timer0_Isr(void) interrupt 1                //1MSÖ´ÐÐÒ»´Î
{

        Task_Marks_Handler_Callback();                                        //ϵͳ¼ÆÊ±

}








每天不一YOUNG 发表于 2024-12-26 16:37:24

第十集:

点亮P20端口


void TASK_1( void )
{
    //-------------------------p2端口流水灯------------------------
    LED40_SetPort(2,~P2_STATE);//点亮P20端口
}




P2口流水灯,P10闪烁 ,见视频




左边数码管显示p32按下次数,右边数码管显示p33按下次数




按下数字按键在数码管显示对应的数字按键




每天不一YOUNG 发表于 2025-1-14 15:26:14

第十一集
任务一
代码:

#include "config.h"
#include "task.h"
#include "io.h"

u8 State={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化   
    usb_init();    //USB CDC接口配置   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
    EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);         
   
    while(1)                                                
    {                                                         
      if (bUsbOutReady)                                    
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);      

            usb_OUT_done();            
      }
       Task_Pro_Handler_Callback();   
    }
   
}   

void Timer0_Isr(void) interrupt 1      
{
      Task_Marks_Handler_Callback();
      
}





任务二
代码:

#include "config.h"
#include "task.h"
#include "io.h"

u8 State={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                             
    Sys_init();   //函数调用,系统初始化   
    usb_init();    //USB CDC接口配置   
    IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
    EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);            
   
    while(1)                                                
    {                                                         
      if (bUsbOutReady)                                 
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);         

            usb_OUT_done();            
      }
       Task_Pro_Handler_Callback();   
    }
   
}   

void Timer0_Isr(void) interrupt 1      
{
      Task_Marks_Handler_Callback();
      
}






每天不一YOUNG 发表于 2025-1-21 15:29:20

第12集复位系统


任务一:
代码:

#include "config.h"
#include "task.h"
#include "io.h"

u8 State={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化       
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);            //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
      if (bUsbOutReady)                                    //如果接收到了数据
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);         //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();            
      }
       Task_Pro_Handler_Callback();//执行功能函数       
       if( P33 !=0)       
                WDT_CONTR = 0X34;
        }
   
}   

void Timer0_Isr(void) interrupt 1      //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}




任务二
(1)复位后进入下载模式





(2)复位后从头开始运行用户程序





程序:

#include "config.h"
#include "task.h"
#include "io.h"

u8 State={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 i;
u8 Run_State = 0;         //运行状态
u8 num = 0;

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

void main(void)
{
    int count = 1;                                              //按键计数   
    Sys_init();   //函数调用,系统初始化       
    usb_init();    //USB CDC接口配置   
        IE2 |= 0x80; //使能USB中断
    Timer0_Init();//定时器初始化
    Init_595();
        EA = 1;                                                
    P40 = 0;                                                
    while (DeviceState != DEVSTATE_CONFIGURED);            //等待USB完成配置
    WDT_CONTR = 0X24;
        while(1)                                                
    {                                                         
      if (bUsbOutReady)                                    //如果接收到了数据
      {                                                   
         // USB_SendData(UsbOutBuffer,OutNumber);         //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();            
      }
       Task_Pro_Handler_Callback();//执行功能函数       
      
                WDT_CONTR = 0X34;
        }
   
}   

void Timer0_Isr(void) interrupt 1      //3秒执行一次
{
                Task_Marks_Handler_Callback(); //系统计时
               
}



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