深圳大学《单片机原理及接口技术》上机实验演示视频@Ai8051U
<h1>深圳大学</h1><h5>Ai8051U 《单片机原理及接口技术》 实验,</h5>
<h5>上机实践交流贴上线</h5>
<p><a href="forum.php?mod=attachment&aid=85796" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:AI8051U上机实践指导-20250223.zip</a></p>
<p><img src="data/attachment/forum/202502/24/095538m4fr0iuixko4xwr0.png" alt="image.png" title="image.png" /></p>
<h5>以下是实践交流的部分,演示视频在二楼,方便大家在这里对实验课中的内容进行交流</h5>
<h5>参考数据手册,AI8051U数据手册,20250227版</h5>
<p><a href="https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf">https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf</a></p>
<h5>安装强大的 ISP下载/烧录,辅助开发工具包</h5>
<p><a href="https://www.stcai.com/gjrj">https://www.stcai.com/gjrj</a><br />
<img src="data/attachment/forum/202502/22/084028hct1gfuzggvragay.jpg" alt="" /></p>
<h5>安装 KEIL C51 编译器, 安装 KEIL C251 编译器</h5>
<p>https://www.keil.com/download/product/</p>
<p>Keil Product Downloads<br />
<img src="data/attachment/forum/202502/22/084028i3kfcz1fz799z3ns.jpg" alt="" /></p>
<p>(以下是增加了调试仿真接口显示的代码,可以通过ISP软件的“擎天柱-LED-DIP40”显示 P0 口的实际状态)</p>
<p><img src="data/attachment/forum/202503/03/155948ltyotrz6em0mp6ym.png" alt="image.png" title="image.png" /></p>
<p><a href="forum.php?mod=attachment&aid=86685" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:添加了使用调试仿真接口进行显示的代码.zip</a></p>
深圳大学,2025,
Ai8051U《单片机原理及接口技术》上机实践 指导 演示视频,配套演示程序
<br>
##1-Keil下载及安装 https://v.stcai.com/sv/5c1d2968-19535953529/5c1d2968-19535953529.mp4<br>
##2-STC-ISP添加型号到Keil中 https://v.stcai.com/sv/2952836b-195359515be/2952836b-195359515be.mp4<br>
##3-点亮LED https://v.stcai.com/sv/329be998-1953594c711/329be998-1953594c711.mp4<br>
##4-让LED闪烁 https://v.stcai.com/sv/61034ba8-1953594c710/61034ba8-1953594c710.mp4<br>
##5-USB-CDC控制LED变化 https://v.stcai.com/sv/89f81b6-1953594c6d9/89f81b6-1953594c6d9.mp4<br>
##6-USB-HID和不停电下载程序 https://v.stcai.com/sv/1f97a0ea-1953594c6c4/1f97a0ea-1953594c6c4.mp4<br>
##7-AI8051U内置USB直接仿真 https://v.stcai.com/sv/441001ec-1955ec96d2e/441001ec-1955ec96d2e.mp4<br>
##8-按键控制点灯并使用USB仿真查看汇编代码 https://v.stcai.com/sv/3ac65752-19565b59541/3ac65752-19565b59541.mp4
##9-使用USB-CDC读取按键状态并点灯 https://v.stcai.com/sv/371ea5b4-19565b5956f/371ea5b4-19565b5956f.mp4
======================================================
======================================================
USB-CDC方式进行LED点灯例子:
AI8051U内置USB直接仿真程序:
按键点亮LED并使用USB仿真查看汇编代码:
使用USB-CDC读取按键状态并点灯:
======================================================
如下程序是 AI8051U数据手册 I/O 章节中的对应实验程序
Keil C51 C251共存安装 添加STC芯片到Keil_哔哩哔哩_bilibili
推荐的 提前 预习的 部分 参考视频
《8051U深度入门到32位51大型实战视频》,【免费 + 包邮 送】实验箱@Ai8051U,100万套 - uCOS/FreeRTOS,GUI-uGFX/U8g2, 文件系统, 国产RTOS, 实时操作系统 国芯技术交流网站 - AI32位8051交流社区
Aiapp-ISP (6.95G)版本软件
增加 “深大上机实验范例”,如下图
同时也支持直接下载Hex代码到Ai8051U实验箱
以及以及支持保存范例程序到基于Ai8051U-32Bit的Keil项目中
Ai8051U 使用内部自带的 硬件USB 直接仿真 的演示视频:
https://v.stcai.com/sv/441001ec-1955ec96d2e/441001ec-1955ec96d2e.mp4
视频中使用到的程序:
利用 AiCube@AIapp-ISP V6.95M,
智能配置开发工具启动程序框架自动生成器,实现如下的实验:
32位8051单片机入门的第一个完整的C语言程序,printf_usb("Hello World !\r\n")
https://v.stcai.com/sv/426d0d7d-1963d548feb/426d0d7d-1963d548feb.mp4
AiCube 实验一:直接 printf_usb("Hello World !\r\n")
32位8051单片机入门的第一个完整的C语言程序
AiCube 实验二:查询方式,查询到电脑命令后,
printf_usb("Hello World !\r\n")或其他
AiCube 实验三:中断方式,单片机USB中断接收服务函数收到命令后,
printf_usb("Hello World !\r\n")或其他
以下是纯手敲代码:
实验一:printf_usb("Hello World !\r\n"),第一个完整的C语言程序
实验二: 查询方式,查询到电脑命令后,printf_usb("Hello World !\r\n")或其他
实验三: 中断方式,单片机USB中断接收服务函数收到命令后,
printf_usb("Hello World !\r\n")或其他
https://v.stcai.com/sv/6707e7ef-1960e65e764/6707e7ef-1960e65e764.mp4
如何学《单片机原理及接口技术》?
啥 ?猫抓老鼠去点灯 ?
几个推荐的AI及FFT等应用链接
1,视频级刷彩屏,猫抓老鼠
https://www.stcaimcu.com/forum.p ... id=10511&pid=103755
=================================================================
2,
语音识别,AI时代再点灯@Ai8051U,开源项目;随心而行,如期而至!
https://www.stcaimcu.com/forum.p ... 4061&extra=page%3D1
【Ai8051U】实验箱上玩最新的 语音识别
https://www.stcaimcu.com/forum.p ... 5044&extra=page%3D1
===========================================================
3,
Ai8051U运行LeNet卷积神经网络,实现手写计算器 ! 8051U, AI 开山之作
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11901
在Ai8051U实验箱上玩 Ai手写计算器 | 卷积神经网络在Ai8051U上的实现与应用
https://www.stcaimcu.com/forum.p ... 2144&extra=page%3D1
===========================================================
4,USB声卡,SD卡音乐播放器
Ai8051U 实现USB全双工声卡,同时 录 / 放 音,微信通话,腾讯会议, 重磅开源
https://www.stcaimcu.com/forum.p ... id=11217&pid=112464
================================================================
5,
FFT频谱分析@Ai8051U, 256点FFT分析,快速傅里叶变换,USB-CDC虚拟串口送电脑显示
https://www.stcaimcu.com/forum.p ... 0324&extra=page%3D1
FFT频谱分析@Ai8051U, 256点FFT分析,快速傅里叶变换,通过SPI DMA送OLED12864显示
https://www.stcaimcu.com/forum.p ... 1941&extra=page%3D1
===========================================================
6,
示波器-开源项目@Ai8051U-实验箱V1.2-示波器-USB送电脑显示
https://www.stcaimcu.com/forum.p ... 1257&extra=page%3D1
STC8H实验箱-老梁信号发生器演示
https://www.stcaimcu.com/plugin. ... _7ree=1&id_7ree=323
STC开源全球最强悍的8051示波器学习视频
https://www.stcaimcu.com/plugin. ... _7ree=1&id_7ree=295
===========================================================
<h1>安装Keil C51和C251</h1>
<h2>首先登录 Keil 官网,下载最新版的 C51和C251 安装包</h2>
<p>手动在浏览器的地址栏输入以下网址:https://www.keil.com/download/product/</p>
<p><img src="data/attachment/forum/202502/22/084627ryyqy4ypoyi0gqb4.png" alt="image.png" title="image.png" /></p>
<p>进入首页,我们可以看到C51和C251的下载链接,这里将这两个安装包都下载到桌面上</p>
<p><img src="data/attachment/forum/202502/22/084637t03zv9atklv41zs3.png" alt="image.png" title="image.png" /></p>
<p>这里以C51作为示例,点击进入后,会让填入信息,这里随便填一些就可以了,然后点击Submit</p>
<p><img src="data/attachment/forum/202502/22/084645pgbftfebexeiv6m4.png" alt="image.png" title="image.png" /></p>
<p>点击完后,就可以出现C51V961.EXE,点击粗体蓝色字即可下载C51安装包。C251部分操作同上</p>
<h2>双击下载的安装包开始安装。</h2>
<p>点击“Next”(这里以C251安装为例,安装完C251后,再继续安装C51即可)</p>
<p><img src="data/attachment/forum/202502/22/084658nqpjr2e5q43vezy5.png" alt="image.png" title="image.png" /></p>
<p>勾选“I agree to all the terms of the preceding License Agreement”,然后点击“Next”:</p>
<p><img src="data/attachment/forum/202502/22/084706h1n3q4kyazd341il.png" alt="image.png" title="image.png" /></p>
<p>选择安装目录,然后点击“Next”:</p>
<p><img src="data/attachment/forum/202502/22/084714njzd4qnxjgknxadk.png" alt="image.png" title="image.png" /></p>
<p>填写个人信息,然后点击“Next”:</p>
<p><img src="data/attachment/forum/202502/22/084721d7d83tza8hmvt33r.png" alt="image.png" title="image.png" /></p>
<p>安装完成,点击“Finish”结束。</p>
<p><img src="data/attachment/forum/202502/22/084728m130lx8r1je1xleo.png" alt="image.png" title="image.png" /></p>
<h2>安装完成后,添加STC型号和头文件</h2>
<p>这时候,Keil内还是没有STC单片机部分的型号及头文件,我们通过STC-ISP进行添加</p>
<p>STC-ISP的下载链接是:<a href="https://www.stcai.com/gjrj">https://www.stcai.com/gjrj</a></p>
<p><img src="data/attachment/forum/202502/22/084737rnfyfctk6uzf76p7.png" alt="image.png" title="image.png" /></p>
<p>点击软件下载即可下载最新版本的STC-ISP</p>
<p>使用 Keil 之前需要先安装仿真驱动。仿真驱动的安装步骤如下:</p>
<p>首先打开 ISP 下载软件,然后在软件右边功能区的“Keil 仿真设置”页面中点击“添加型号和头文件到</p>
<p>Keil 中添加仿真器驱动到 Keil 中”按钮:</p>
<p><img src="data/attachment/forum/202502/22/084748oqst5ryvkj2kyya1.png" alt="image.png" title="image.png" /></p>
<p>按下后会出现如下画面:</p>
<p><img src="data/attachment/forum/202502/22/084755abctdktcidkbabap.png" alt="image.png" title="image.png" /></p>
<p>将目录定位到 Keil 软件的安装目录,然后确定。安装成功后会弹出如下的提示框:</p>
<p><img src="data/attachment/forum/202502/22/084801wwxdwz67esa66dx2.png" alt="image.png" title="image.png" /></p>
<p>即表示驱动正确安装了</p>
<p>头文件默认复制到 Keil 安装目录下的“C251\INC\AI”目录中</p>
<p>在 C 代码中使用“#include <Ai8051U.H>”或者“#include "Ai8051U.H"”进行包含均可正确使用</p>
<h1>建立一个新工程</h1>
<h2>新建一个项目文件夹</h2>
<p>在一个纯英文目录下(例如D盘根目录)新建一个文件夹,用于存放项目的文件。不直接在桌面创建是因为路径有可能包含中文。</p>
<h2>新建工程</h2>
<p>打开Keil软件,在上方的‘Project’选项中,找到New uVision Project选项,进行新建工程。</p>
<p><img src="data/attachment/forum/202502/22/084817so7bddnz6n8if7n7.png" alt="image.png" title="image.png" /></p>
<p>选择刚才创建好的文件夹,填入一个工程名字(尽量是英文的),点击确定。</p>
<p><img src="data/attachment/forum/202502/22/084827ka3tyywtte4wns4s.png" alt="image.png" title="image.png" /></p>
<h2>选择单片机</h2>
<p>在上方的Database选项中选择‘STC MCU Database’,然后展开AI选项,找到其中的‘AI8051U-32Bit’选项点击,最后点击‘OK’以完成单片机选择。</p>
<p><img src="data/attachment/forum/202502/22/084842iiyc3ju3guigfc6f.png" alt="image.png" title="image.png" /></p>
<h2>设置4Byte字节对齐</h2>
<p>选择完单片机后,项目是空白的。此时需要设置一下工程的选项。</p>
<p>在左侧的Project选项卡中,右键Target 1文件夹图标,然后选择‘Options for Target ‘Target 1’...’选项,进入后默认就是Target选项卡,如图所示点击‘4Byte Interrupt Frame Size’选项,以规范程序内部调用指针时候的对齐,防止出现奇怪的问题。</p>
<p><img src="data/attachment/forum/202502/22/084850ynrtrt4t4q0ia0tq.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202502/22/084854b7cycqoyy73zc878.png" alt="image.png" title="image.png" /></p>
<h2><a href="">设置Xsmall</a>模式</h2>
<p>还是在Target选项卡,这次选择Memory Model为‘XSmall’模式</p>
<p><img src="data/attachment/forum/202502/22/084902xvv1pmsvvthvv9sp.png" alt="image.png" title="image.png" /></p>
<h2>使用REMOVEUNUSED功能</h2>
<p>接下来切换到L251 Misc选项卡,在Misc controls输入框中,输入大写的</p>
<p>‘REMOVEUNUSED’,以实现不使用的函数不进行调用。</p>
<p><img src="data/attachment/forum/202502/22/084914e66kjkmdht4sipj0.png" alt="image.png" title="image.png" /></p>
<h2>选择输出HEX文件功能</h2>
<p>接下来,切换到Output选项卡,勾选‘Creat HEX File’选项,否则编译后是不会创建HEX文件的。</p>
<p><img src="data/attachment/forum/202502/22/084923qjdddyw99fhjsayo.png" alt="image.png" title="image.png" /></p>
<h1>程序编写:</h1>
<h2>首先是添加头文件,通过右键添加即可</h2>
<p><img src="data/attachment/forum/202502/22/084932b4zae6i7azulu1gs.png" alt="image.png" title="image.png" /></p>
<h2>然后,是添加常用头文件</h2>
<p>#include "intrins.h" //使用_nop_()函数所必须要包含的头文件</p>
<p>#include "ai_usb.h"//使用usb所需要包含的头文件</p>
<h2>延时函数通过STC-ISP软件进行生成:</h2>
<p><img src="data/attachment/forum/202502/22/084941xhiccchh3dh4uddv.png" alt="image.png" title="image.png" /></p>
<h2>IO部分初始化函数也由STC-ISP软件生成</h2>
<p><img src="data/attachment/forum/202502/22/084949o1n024ufnpczklc9.png" alt="image.png" title="image.png" /></p>
<h2>以下是程序的完整代码:</h2>
<p>(USB_CDC和USB_HID通过在工程内添加不同的LIB库实现切换,不需要改动代码)</p>
<p><img src="data/attachment/forum/202502/22/084958tstpxl8xq7022ti8.png" alt="image.png" title="image.png" /></p>
<pre><code class="language-c">#include <AI8051U.H> //包含AI8051U的头文件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件
#include "ai_usb.h"//使用usb所需要包含的头文件
#define PRINTF_SEGLED
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
void Delay500ms(void) //@40MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 4999998UL;
while (i) i--;
}
void main(void)
{
EAXFR = 1; //使能拓展寄存器访问
CKCON = 0;//设置访问片内扩展的xdata部分速度为最快
WTST = 0; //设置取程序代码不等待,以最快速度运行
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
usb_init(); //USB 接口配置
EA = 1;//打开总中断
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
P40 = 0;//打开LED部分的供电
while(1)
{
//使用USB串口控制来手动控制LED部分
if(bUsbOutReady)
{
P2 ^= UsbOutBuffer;
LED40_SetPort(2,P2);
usb_OUT_done();
}
}
}
</code></pre>
<h1>下载用户程序到实验箱</h1>
<h2>首先使用 USB 线将实验箱与电脑正确连接。</h2>
<p>然后打开 AIapp-ISP-v6.94F 或以上版本。</p>
<p><img src="data/attachment/forum/202502/22/085224baromwf8ox8zywqr.png" alt="image.png" title="image.png" /></p>
<p>硬件 USB 下载用户程序步骤:</p>
<ol>
<li>将 P3.2 与 GND 短接按键按下;P3.2 在用户区可做其他用途</li>
<li>上电,或停电再上电,电脑端识别出 USB,此时可松开 P3.2 按键</li>
<li>点击电脑端 ISP 软件的【下载 / 编程】按钮,下载成功</li>
</ol>
<p>另外:如果P4.7/nRST 已被设置为复位脚,通电状态下,外部手动复位也可进入 USB 下载</p>
<p>可以不用再按P32和电源两个按键了</p>
<p><img src="data/attachment/forum/202502/22/085241ihs7r3r73kjrs7sy.png" alt="image.png" title="image.png" /></p>
<p><img src="data/attachment/forum/202502/22/085244ulwwm545wah5r54d.png" alt="image.png" title="image.png" /><br />
文件正确打开后,点击界面中的“下载 / 编程”按钮开始下载代码。</p>
<p><img src="data/attachment/forum/202502/22/085251tgaa7hgv5rvttama.png" alt="image.png" title="image.png" /></p>
<p>下载成功,会出现如下画面:</p>
<p><img src="data/attachment/forum/202502/22/085301dstbs73q8q2oyqcs.png" alt="image.png" title="image.png" /></p>
<p>下载完成后:</p>
<p>如果使用的HID方式,可以通过USB-HID助手的中断输入输出来进行数据交换。</p>
<p>设备名字叫STC HID Demo,同时也可以使用右侧的多字符串发送进行控制LED灯。</p>
<p><img src="data/attachment/forum/202502/22/085311srtrr8brybumgy3z.png" alt="image.png" title="image.png" /><br />
如果使用USB-CDC方式,则需要到CDC串口助手部分</p>
<p><img src="data/attachment/forum/202502/22/085318soumxszzya6uza6c.png" alt="image.png" title="image.png" /></p>
<p>此时就可以看到串口扫描部分出现了USB-CDC端口COM75(因不同电脑,这个COM号有所不同)</p>
<p>此时通过串口助手打开对应的CDC串口,在右侧的多字符串发送部分对对应的指令进行命名,按照如图所示格式输入后,按下按键即可完成对应LED的亮/灭的取反,十分直观。<br />
当然,也可以使用非串口方式,通过死循环延时和IO取反来实现LED的闪烁。</p>
<pre><code class="language-c">#include <AI8051U.H> //包含AI8051U的头文件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件
void Delay500ms(void) //@40MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 4999998UL;
while (i) i--;
}
void main(void)
{
EAXFR = 1; //使能拓展寄存器访问
CKCON = 0;//设置访问片内扩展的xdata部分速度为最快
WTST = 0; //设置取程序代码不等待,以最快速度运行
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
P40 = 0;//打开LED部分的供电
while(1)
{
//LED循环自动闪烁部分
P0 = ~P0;//对P0端口取反
//P00 = ~P00;//对单个端口取反
Delay500ms();//延时0.5s
}
}
</code></pre>
王昱顺 发表于 2025-2-22 08:45
安装Keil C51和C251
首先登录 Keil 官网,下载最新版的 C51和C251 安装包
手动在浏览器的地址栏输入以下网 ...
收藏学习。写的太详细了,必须点赞!
{:qiang:}
{:qiang:} <h3>点亮一个或者多个LED程序-main.c</h3>
<pre><code class="language-C">#include <AI8051U.H> //包含AI8051U的头文件
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
WTST = 0; //设置取程序代码不等待,程序以最快速度运行
CKCON = 0; //设置访问片内扩展的xdata部分速度为最快,不等待
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
P40 = 0;//打开LED部分的供电
while(1)
{
//LED点亮部分
P0 = 0;//对P0端口置0,点亮整组LED
//P00 = 0;//对单个端口置0,点亮单个LED,这个点亮是的LED0
//P01 = 0;//对单个端口置0,点亮单个LED,这个点亮是的LED1
}
}
</code></pre>
<h3>让LED闪烁起来-main.c</h3>
<pre><code class="language-C">#include <AI8051U.H> //包含AI8051U的头文件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件
void Delay500ms(void) //@40MHz
{
unsigned long edata i;
_nop_();
_nop_();
i = 4999998UL;
while (i) i--;
}
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
WTST = 0; //设置取程序代码不等待,程序以最快速度运行
CKCON = 0; //设置访问片内扩展的xdata部分速度为最快,不等待
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x00; P1M1 = 0x00;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x00; P3M1 = 0x00;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
P40 = 0;//打开LED部分的供电
while(1)
{
//LED循环自动闪烁部分
P0 = ~P0;//对P0端口取反
//P00 = ~P00;//对单个端口取反
Delay500ms();//延时0.5s
}
}
</code></pre>
<h3>使用简单的USB-CDC接口控制LED灯-main.c</h3>
<h3>使用兼容性高的USB-HID接口控制LED灯-main.c</h3>
<p>(注:这两个程序仅仅是所包含的库函数不一样,程序是一样的)</p>
<pre><code class="language-C">#include <AI8051U.H> //包含AI8051U的头文件
#include "ai_usb.h"//使用usb所需要包含的头文件
char *USER_DEVICEDESC = NULL;//USB 库里预留的设备描述符,必须定义,但不要使用
char *USER_PRODUCTDESC = NULL;//USB 库里预留的产品描述符,必须定义,但不要使用
char *USER_STCISPCMD = "@STCISP#";
//这里使用"@STCISP#"这个字符串当作不停电自动下载命令,用户只需要在这里定义好这个字符串,
//后面添加的库文件的 USB 中断程序会自动判断从电脑端下传的数据是否和这个字符串一样,如果一样,
//则会自动软复位到系统区等待 USB 下载,用户不需要进行额外的处理。
void main(void)
{
EAXFR = 1; //允许访问扩展的特殊寄存器,XFR
WTST = 0; //设置取程序代码等待时间,赋值为 0 表示不等待,程序以最快速度运行
CKCON = 0; //设置访问片内的 xdata 速度,赋值为 0 表示用最快速度访问,不增加额外的等待时间
P0M0 = 0x00; P0M1 = 0x00; //设置 P0 口为准双向口模式
P1M0 = 0x00; P1M1 = 0x00; //设置 P1 口为准双向口模式
P2M0 = 0x00; P2M1 = 0x00; //设置 P2 口为准双向口模式
P3M0 = 0x00; P3M1 = 0x00; //设置 P3 口为准双向口模式
P4M0 = 0x00; P4M1 = 0x00; //设置 P4 口为准双向口模式
P5M0 = 0x00; P5M1 = 0x00; //设置 P5 口为准双向口模式
P6M0 = 0x00; P6M1 = 0x00; //设置 P6 口为准双向口模式
P7M0 = 0x00; P7M1 = 0x00; //设置 P7 口为准双向口模式
usb_init(); //USB 接口配置
EA = 1;//打开总中断
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
P40 = 0;//打开LED部分的供电
while(1)
{
//使用USB串口控制来手动控制LED部分
if(bUsbOutReady)
{
P0 ^= UsbOutBuffer; // 接收的数据送P0口进行异或操作,即对应bit为1的位取反
// 例如传入0x01,则对应P0的bit0位进行取反操作,也就是P00口对应的LED0取反
LED40_SetPort(0, P0); // 使用 AIapp-ISP 软件菜单“调试仿真接口”中的
// “擎天柱-LED-DIP40”进行模拟显示 P0 口
usb_OUT_done(); // 本包接收的数据处理完毕,准备接收下一包数据
}
}
}
</code></pre>