Bootstrap

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

一、任务需求

指示灯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的低八位


;