当前位置: 首页 > news >正文

【汇编语言】单片机程序执行过程

一、任务需求

指示灯LED4闪烁,亮0.5秒,灭0.5秒,无限循环 

二、针对硬件的编程

  • 1、确定原理图
  • 2、确定硬件的物理关系

三、设计步骤

1.用自己的语言描述工作流程

  • 1.1指示灯LED4亮
  • 1.2延时0.5秒
  • 1.3指示灯LED4灭
  • 1.4延时0.5秒
  • 1.5跳转到1.1步 

 2.确定硬件连接关系,确定驱动逻辑

  • CLR 清零
  • SETB 置高电平

3. 延时子程序

实现方法:

软件延时与单片机相关  指令执行周期相关工程里面这种做法不可取
硬件延时 与单片机相关 与硬件定时器相关均与系统时钟相关
软硬结合取长补短

 软件延时

3.1确定系统时钟

系统时钟12MHZ
单周期指令1us
双周期指令2us
四周期指令4us

时钟频率f:12MHZ

时钟周期T:1/f

机器周期:1/12MHZ*12=1us

指令周期:执行一条指令所花费的时间 以机器周期为基本单位

 

3.2确定指令周期数
 总线的位宽  8位 1字节 0-255(不能超过这个范围)

 

R7==0 顺序执行(执行下一条指令) 


循环嵌套 

更简洁的写法

C语言中的函数在汇编语言中叫子程序 ——D500ms

LCALL——长调用 长指的是64k空间里面都能调用到

 

D1ms 代表的是地址 是子程序的名字

RET返回(主函数)

 

四、完整的汇编指令

ORG不是汇编指令,是给汇编器看的 

 

PC决定了程序执行的位置

地址总线:16位

数据总线:8位

单片机读取机器码的 思考过程

 执行指令的方式

 PC指针初始是0000H 由硬件决定 复位后为0

做了长跳转到main 是为了把中断服务程序的入口地址给预留出来


堆栈指针

PC默认值为07H,永远用不到的 

压进去的第一个数是PC的低八位


本文来自【手工汇编_004_程序执行过程】

相关文章:

  • MySQL数据库复杂的增删改查操作
  • 【算法 C/C++】一维差分
  • 本科毕业论文开题报告需要查重吗?
  • API随心搭接口:一键定制你的专属数据解决方案
  • 图片的拖拽+缩放
  • envsetup和python venv
  • 跟踪性能提高11%|端到端新架构DMAD:通过分离语义-运动学习解决负迁移难题
  • 山东大学离散数学第五章习题解析
  • 理论+实操:MyBlockly 可视化编程工具详解,以及如何基于 pymycobot 库控制ultraArm 机械臂
  • C#-扩展方法-Linq
  • u盘和硬盘的存储结构
  • 拦截器与过滤器
  • LPZero: Language Model Zero-cost Proxy Search from Zero(未更新完预览版本)
  • C++算法——差分
  • 在Vue中 使用 Web Worker
  • 2025-3-9 一周总结
  • 强化学习(赵世钰版)-学习笔记(4.值迭代与策略迭代)
  • 算力100问☞第80问:如何实现算力的弹性伸缩?
  • 配置 Thunderbird 以使用 QQ 邮箱
  • TinyWebServer项目笔记——02 半同步半反应堆线程池
  • 网上翻译网站做译员/店铺推广软文范例
  • 湖南省人民政府热线电话/seo简单优化
  • 电脑做网站服务器WIN7 买个域名/适合发朋友圈的营销广告
  • 佛山网站建设4-win方维/营销策略范文
  • 做网站租服务器多少钱/确认已有81人感染
  • 惠州做网站开发/北京优化互联网公司