gdbbgecu 发表于 2024-12-18 17:19:21

AI8051U学习打卡

第一集
51单片机居然可以这么牛,那个手写计算器太牛了,加油

gdbbgecu 发表于 2024-12-18 17:57:45

第二集打卡
感谢冲哥,真的是保姆级教学。继续加油{:4_175:}

菜鸟上路 发表于 2024-12-18 18:37:50

第三集打卡
学习了
keil文件创建
keil配置设置
头文件的添加
io配置
有没有大佬告知一下P0M0和P0M1区别{:4_167:}

菜鸟上路 发表于 2024-12-18 18:42:29

上课没注意,看了一下文档,现在懂了

菜鸟上路 发表于 2024-12-18 19:14:49

第四集打卡
学习了
USB的库文件调用
USB函数的使用
中断寄存器的用法

菜鸟上路 发表于 2024-12-18 19:15:28

明天继续,加油

菜鸟上路 发表于 2024-12-20 09:28:08

<p>第5集</p>
<p>c语言的基础知识</p>
<p>运算符那里好烧脑啊<img alt="tuosai" class="emoji" src="https://www.stcaimcu.com/static/image/smiley/default/tuosai.gif" title="tuosai" /><br />
<img src="data/attachment/forum/202412/20/092559ii6y23cggci96mmo.jpg" alt="1000017071.jpg" title="1000017071.jpg" /></p>
<p><img src="data/attachment/forum/202412/20/092559ibbupmd5r8gi2b5b.jpg" alt="1000017074.jpg" title="1000017074.jpg" /></p>
<p><img src="data/attachment/forum/202412/20/092559amokksqkd33tu34i.jpg" alt="1000017070.jpg" title="1000017070.jpg" /></p>
<p><img src="data/attachment/forum/202412/20/092559w764w8otr7a7r9n0.jpg" alt="1000017072.jpg" title="1000017072.jpg" /></p>

菜鸟上路 发表于 2024-12-20 19:16:27

<p>第6集</p>
<p>io的应用</p>
<p>下面是我写的作业</p>
<p>#include &quot;ai8051u.h&quot;                        //调用头文件</p>
<p>#include &quot;stc32_stc8_usb.h&quot;                //调用头文件</p>
<p>#include &quot;intrins.h&quot;                        //d调用头文件</p>
<p>#define u8unsigned char                //8位无符号变量(0-255)</p>
<p>#define u16 unsigned int                //16位无符号变量(0-65535)</p>
<pre><code></code></pre>
<p>u8 state = 0xff;                                        //初始状态</p>
<p>char *USER_DEVICEDESC = NULL;</p>
<p>char *USER_PRODUCTDESC = NULL;</p>
<p>char *USER_STCISPCMD = &quot;@STCISP#&quot;;</p>
<p>void Delay20ms(void)        //@24.000MHzDelay20ms();</p>
<p>{</p>
<pre><code>unsigned long edata i;
</code></pre>
<pre><code>_nop_();
</code></pre>
<pre><code>_nop_();
</code></pre>
<pre><code>i = 119998UL;
</code></pre>
<pre><code>while (i) i--;
</code></pre>
<p>}</p>
<p>void main(void)</p>
<p>{</p>
<pre><code>WTST = 0;                                                                                //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
</code></pre>
<pre><code>EAXFR = 1;                                                                                 //扩展寄存器(XFR)访问使能
</code></pre>
<pre><code>CKCON = 0;                                                                                 //提高访问XRAM速度
</code></pre>
<pre><code></code></pre>
<pre><code>P0M1 = 0x00;   P0M0 = 0x00;
</code></pre>
<pre><code>P1M1 = 0x00;   P1M0 = 0x00;
</code></pre>
<pre><code>P2M1 = 0x00;   P2M0 = 0x00;
</code></pre>
<pre><code>P3M1 = 0x00;   P3M0 = 0x00;
</code></pre>
<pre><code>P4M1 = 0x00;   P4M0 = 0x00;
</code></pre>
<pre><code>P5M1 = 0x00;   P5M0 = 0x00;
</code></pre>
<pre><code>P6M1 = 0x00;   P6M0 = 0x00;
</code></pre>
<pre><code>P7M1 = 0x00;   P7M0 = 0x00;
</code></pre>
<pre><code></code></pre>
<pre><code>usb_init();                                     //USB CDC 接口配置
</code></pre>
<pre><code>IE2 |= 0x80;                                    //使能USB中断
</code></pre>
<pre><code>EA = 1;                                                                                        //IE |= 0X80;
</code></pre>
<pre><code></code></pre>
<pre><code>P40 = 0;
</code></pre>
<pre><code></code></pre>
<pre><code>while (DeviceState != DEVSTATE_CONFIGURED);   //等待USB完成配置
</code></pre>
<pre><code></code></pre>
<pre><code>while(1)
</code></pre>
<pre><code>{
</code></pre>
<pre><code></code></pre>
<pre><code>if (bUsbOutReady)                                                        //如果接收到了数据
</code></pre>
<pre><code>{
</code></pre>
<pre><code>//USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
</code></pre>
<pre><code>usb_OUT_done();                                                        //
</code></pre>
<pre><code>}
</code></pre>
<pre><code></code></pre>
<pre><code></code></pre>
<pre><code>//作业一:P32按下灯亮,P33按下灯灭
</code></pre>
<p>//                if( P32 == 0 )                                                                //判断P32按钮是否按下</p>
<p>//                {</p>
<p>//                        Delay20ms();                                                        //延时20ms消抖</p>
<p>//                        if( P32 == 0 )</p>
<p>//                        {</p>
<p>//</p>
<p>//                                P00 = 0;</p>
<p>//                                printf(&quot;灯亮了\r\n&quot;);</p>
<p>//</p>
<p>//                                while( P32 == 0 );                                        //等待P32松开</p>
<p>//</p>
<p>//                        }</p>
<p>//                }</p>
<p>//          if( P33 == 0 )                                                                //判断P33按钮是否按下</p>
<p>//                {</p>
<p>//                        Delay20ms();                                                        //延时20ms消抖</p>
<p>//                        if( P33 == 0 )</p>
<p>//                        {</p>
<p>//</p>
<p>//                                P00 = 1;</p>
<p>//                                printf(&quot;灯灭了\r\n&quot;);</p>
<p>//</p>
<p>//                                while( P33 == 0 );                                        //等待P33松开</p>
<p>//</p>
<p>//                        }</p>
<p>//                }</p>
<pre><code>//作业二:P32按一下亮一个灯,P33按下灯灭
</code></pre>
<pre><code>if(P32 == 0)                              //判断P32按钮是否按下
</code></pre>
<pre><code>{
</code></pre>
<pre><code>Delay20ms();                               //延时20ms消抖
</code></pre>
<pre><code>if(P32 == 0)
</code></pre>
<pre><code>{
</code></pre>
<pre><code>P0 = state - 1;
</code></pre>
<pre><code>while( P32 == 0 );                                        //等待P32松开
</code></pre>
<pre><code>}
</code></pre>
<pre><code></code></pre>
<pre><code>}
</code></pre>
<pre><code>if( P33 == 0 )                                                                //判断P33按钮是否按下
</code></pre>
<pre><code>{
</code></pre>
<pre><code>Delay20ms();                                                        //延时20ms消抖
</code></pre>
<pre><code>if( P33 == 0 )
</code></pre>
<pre><code>{
</code></pre>
<pre><code></code></pre>
<pre><code>P0 = 0xff;
</code></pre>
<pre><code>printf(&quot;灯全灭了\r\n&quot;);
</code></pre>
<pre><code></code></pre>
<pre><code>while( P33 == 0 );                                        //等待P33松开
</code></pre>
<pre><code></code></pre>
<pre><code>}
</code></pre>
<pre><code>}
</code></pre>
<pre><code>}
</code></pre>
<p>}<br />
<img src="data/attachment/forum/202412/20/191622b5lhe6lwu1z25l4k.jpg" alt="1000017114.jpg" title="1000017114.jpg" /></p>
<p><img src="data/attachment/forum/202412/20/191622vfl4uxn34fkavour.jpg" alt="1000017112.jpg" title="1000017112.jpg" /></p>

菜鸟上路 发表于 2024-12-20 19:19:00

重发一下第6集的作业
#include "ai8051u.h"                        //调用头文件
#include "stc32_stc8_usb.h"                //调用头文件
#include "intrins.h"                        //d调用头文件

#define u8unsigned char                //8位无符号变量(0-255)
#define u16 unsigned int                //16位无符号变量(0-65535)       
       
u8 state = 0xff;                                        //初始状态

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

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

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


void main(void)
{
    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();                                     //USB CDC 接口配置

    IE2 |= 0x80;                                    //使能USB中断
    EA = 1;                                                                                        //IE |= 0X80;
       
        P40 = 0;
       
        while (DeviceState != DEVSTATE_CONFIGURED);   //等待USB完成配置
       
        while(1)
        {
               
      if (bUsbOutReady)                                                        //如果接收到了数据
      {
            //USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            
            usb_OUT_done();                                                        //
      }
               
                       
                //作业一:P32按下灯亮,P33按下灯灭
//                if( P32 == 0 )                                                                //判断P32按钮是否按下
//                {
//                        Delay20ms();                                                        //延时20ms消抖
//                        if( P32 == 0 )
//                        {
//               
//                                P00 = 0;
//                                printf("灯亮了\r\n");
//                               
//                                while( P32 == 0 );                                        //等待P32松开
//                               
//                        }
//                }
//          if( P33 == 0 )                                                                //判断P33按钮是否按下
//                {
//                        Delay20ms();                                                        //延时20ms消抖
//                        if( P33 == 0 )
//                        {
//               
//                                P00 = 1;
//                                printf("灯灭了\r\n");
//                               
//                                while( P33 == 0 );                                        //等待P33松开
//                               
//                        }
//                }
                //作业二:P32按一下亮一个灯,P33按下灯灭
                if(P32 == 0)                              //判断P32按钮是否按下
                {
                  Delay20ms();                               //延时20ms消抖
                  if(P32 == 0)
                  {
                        P0 = state - 1;
                        while( P32 == 0 );                                        //等待P32松开
                  }
                  
                }
                if( P33 == 0 )                                                                //判断P33按钮是否按下
                {
                        Delay20ms();                                                        //延时20ms消抖
                        if( P33 == 0 )
                        {
               
                                P0 = 0xff;
                                printf("灯全灭了\r\n");
                               
                                while( P33 == 0 );                                        //等待P33松开
                               
                        }
                }
        }
}
页: [1]
查看完整版本: AI8051U学习打卡