7 8051单片机从汇编到C语言【开源系列教程】
文章平均质量分 64
这是一个8051教学仓库。不使用具体的硬件,直接使用Keil做模拟器,使用虚拟串口做输入输出,直接在电脑上编译运行,保证不被硬件问题卡住,从Keil官网下载Keil软件后再下载此仓库,打开仓库里的工程运行程序后能直接看到结果。重点介绍8051的寄存器、指令集、Keil伪指令、汇编、C编程
才鲸嵌入式
2012年开始工作,嵌入式软件开发工程师
展开
-
【目录】8051汇编与C语言系列教程
本源码包含C语言和汇编工程,能直接在电脑中通过Keil模拟器运行,并在Keil示波器窗口看到 IO 输出的矩形波。源码及工程链接汇编效果:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\brief 让LCD灯闪烁(控制IO输出);\details 使用Keil Simulator模拟器,和Debug时的Logic Analyzer示波器窗口查看输出;原创 2024-07-23 22:52:39 · 387 阅读 · 0 评论 -
Keil A51汇编伪指令和C51 C语言关键字大全
【代码】Keil A51汇编伪指令和C51 C语言关键字大全。原创 2024-07-23 23:54:56 · 447 阅读 · 0 评论 -
8051寄存器、指令集、伪指令和关键字详细介绍
C51是8位CPU。顾名思义,它的某个总线是8位,或者一些总线是8位的。实际上它的数据总线是8位的,每条CPU指令只能处理一个8位的数据,而它的外部地址总线是16位的,可以执行最大64KB的程序,也可以简单的理解为编译出来的可执行程序不能超过64KB(可以类比理解为在电脑上你只能下载安装64K以内的软件),这是C51的限制。为什么51单片机的地址总线是16位的,但是它却是8位机?不想使用盗版Keil的话,可以尝试使用SDCC开源编译器,只是没有IDE,还需要自己编写Makefile进行编译。原创 2024-07-23 23:47:36 · 684 阅读 · 0 评论 -
【系列教程之】2、延时与函数
Keil C51 C语言中调用汇编函数时,最多使用三个参数,默认第一个参数从R7开始放,第二个参数从R5开始放,第三个参数从R3开始放,如果是2字节的int,那么遵循8051的大端模式,高字节放在R2、R4、R6,低字节放在R3、R5、R7;汇编函数将返回值返回给C语言时,返回值需要放在R7开始的位置,char就放在R7,int是0xR6R7,long和float是0xR4R5R6R7,指针是类型在R3,指针值0xR2R1;汇编里的函数如果要给C语言用,那么函数名(标号)前要叫下划线,例如。原创 2024-07-23 23:05:55 · 308 阅读 · 0 评论 -
【系列教程之】1、点亮一个LED灯
本源码包含C语言和汇编工程,能直接在电脑中通过Keil模拟器运行,并在Keil示波器窗口看到 IO 输出的矩形波。原创 2024-07-23 23:02:42 · 129 阅读 · 0 评论 -
Keil C51 8051汇编函数参数和返回值放在哪里,C语言调用汇编函数时汇编函数如何处理参数?
Keil C51 C语言中调用汇编函数时,最多使用三个参数,默认第一个参数从R7开始放,第二个参数从R5开始放,第三个参数从R3开始放,如果是2字节的int,那么遵循8051的大端模式,高字节放在R2、R4、R6,低字节放在R3、R5、R7;汇编函数将返回值返回给C语言时,返回值需要放在R7开始的位置,char就放在R7,int是0xR6R7,long和float是0xR4R5R6R7,指针是类型在R3,指针值0xR2R1;汇编里的函数如果要给C语言用,那么函数名(标号)前要叫下划线,例如。原创 2024-07-21 13:14:27 · 695 阅读 · 0 评论 -
13 51单片机汇编:用Keil C51模拟器进行IO输入并打印输入结果[系列教程之13]
【代码】13 51单片机汇编:用Keil C51模拟器进行IO输入并打印输入结果[系列教程之13]原创 2023-06-11 21:43:53 · 922 阅读 · 0 评论 -
12 51单片机汇编:用Keil C51模拟器的UART#1窗口查看串口输出[系列教程之12]
【代码】12 51单片机汇编:用Keil C51模拟器的UART#1窗口查看串口输出[系列教程之12]原创 2023-06-11 15:59:22 · 1677 阅读 · 0 评论 -
8051单片机汇编LCALL为什么跳转不到子程序?解决办法(新手问题)
用Keil创建的AT89C51默认工程没有设置外部RAM,而内部RAM只有0x80的大小,代码按照ORG 0100H放置的话,则程序越界了;例如:如果用汇编写了一个子函数。原创 2023-06-11 13:06:44 · 733 阅读 · 0 评论 -
11 51单片机汇编:IO输出波形,并用Keil模拟器的示波器观看输出的波形[系列教程之11]
【代码】11 51单片机汇编:IO输出波形,并用Keil模拟器的示波器观看输出的波形[系列教程之11]原创 2023-06-10 22:47:23 · 1052 阅读 · 0 评论 -
10 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之10]
【代码】9 51单片机汇编:让定时器产生中断(使用Keil模拟器)[系列教程之9]原创 2023-06-09 21:54:55 · 813 阅读 · 0 评论 -
9 51单片机上电复位入口和中断入口[系列教程之9]
【代码】9 51单片机上电复位入口和中断入口[系列教程之9]原创 2023-06-08 22:38:56 · 298 阅读 · 0 评论 -
8 用Keil模拟器创建AT89C51默认工程[系列教程之8]
8 用Keil模拟器创建AT89C51默认工程[系列教程之8]原创 2023-06-08 22:32:21 · 318 阅读 · 0 评论 -
7 Keil C51 使用_getkey对scanf输入重定向,实现标准输入输出,getchar
8051 C51 使用_getkey对scanf输入重定向,实现标准输入输出,fgetc,getchar,printf,putchar原创 2022-12-04 22:20:34 · 1165 阅读 · 0 评论 -
6 8051使用Keil模拟器和调试输出窗口实现串口收发回环
本工程主要演示使用Keil创建一个默认工程,然后添加串口0的回环收发用例,在Keil的调试串口进行串口收发,并且可以使用虚拟串口,通过SSOM32与Keil通信来进行串口收发。原创 2022-10-30 19:15:27 · 1159 阅读 · 0 评论 -
5 8051用汇编从Keil调试窗口中输出Hello world
8051用汇编从Keil调试窗口中输出Hello world原创 2022-10-30 01:53:15 · 1257 阅读 · 0 评论 -
4 8051宏定义函数举例
8051宏定义函数举例原创 2022-10-30 01:45:43 · 691 阅读 · 0 评论 -
3 Cadence R8051XC2 芯片IP的寄存器介绍
Cadence R8051XC2 芯片IP的寄存器介绍原创 2022-10-30 00:35:32 · 1002 阅读 · 0 评论 -
2 Keil自带的8051汇编boot源码解析注释
本工程主要演示使用Keil创建一个R8051XC2的默认工程,使用Keil自带的Boot汇编文件,然后对这个STARTUP.A51进行注释。原创 2022-10-29 23:41:08 · 1103 阅读 · 0 评论 -
8051(c51)单片机从汇编到C语言,从Boot到应用[开源系列教程]
工程名作用001_点亮一个LED灯从IO口输出高低电平,并使用Keil示波器查看输出,分别用汇编和C语言工程实现002_延时与函数使用汇编进行精准的us和ms延时,用C语言进行大致的延时,介绍汇编函数传入的参数和返回值位置,C语言如何调用汇编函数,通过Keil示波器查看延时的准确度…………Keil 新建Hello world工程使用汇编展示8051代码是从哪些地址开始运行的使用汇编让定时器持续产生中断使用汇编从IO输出波形,并用Keil模拟器查看输出(有图)原创 2022-10-29 23:35:06 · 4760 阅读 · 0 评论 -
1 用Keil仿真8051并在软件中打印Hello world
本工程主要演示使用Keil创建一个R8051XC2的默认工程,使用Keil自带的Boot汇编文件,然后新建一个main.c文件,写一个printf函数 + 简单的串口0驱动,并能从软件窗口上看到printf的结果。创建工程的步骤略,你可以省掉这步,直接打开现有的工程。工程路径:本文档同级目录/01_proj_and_src/01_Hello_world/你可以直接双击打开 ./01_proj_and_src/01_Hello_world/01_Hello_world.uvproj工程。原创 2022-10-29 23:20:49 · 2187 阅读 · 0 评论