嵌入式(二十四):软件格式

1、keil中的中断软件调试手段:
a、软件模拟环境(并不一定完全一样)
b、硬件仿真环境(8bt单片机一般不支持,STC单片机完全不支持)
2、C51语言中断服务函数格式:
void 函数名()interrupt中断号[using 寄存器组]
a、注意:函数名、关键词interrupt、中断号对应于入口地址
b、中断函数是硬件中断触发的,在程序中并没有明确的调用者
c、中断应用注意事项:
①、中断事件恢复、中断标志清零
②、中断服务函数尽量时间短(释放中断资源)
③、ASM编程:现场恢复、中断返回
④、C51编程:工作寄存器组人工选用(注意冲突),或由编译器(合理与效率问题),小心正确使用 using
3、DSP51定时器/计数器:
在这里插入图片描述
a、TIM、PRD: 16bit 计数、寄存器;
b、PSC、TDDR: 4bit 计数、寄存器 
c、SRESET系统复位;TRB软件复位;TSS计数控制 
d、CLKOUT计数时钟;等效为可编程20bit自动重置初值的计数器
e、DSP是一种计算能力很强,控制能力很弱的计算机
4、STC的PCA单元:
PCA:Programmable Counter Array 可编程计数器阵列:
核心是一个十六位的定时/计数器,有3个16位的捕获/比较模块与之相连,每个模块可以编程工作在4种模式下:
①、上升/下降沿捕获:可以准确捕捉某个寄存器的值,并进行存储,而不会影响到该寄存器,即可以精确测量某个事情发生的时刻。由于有三个模块,所以可以同时测三个时间在一个时钟的情况下所发生的时刻。
②、软件定时器:可以精确做定时器,当脉冲数达到了某个模块寄存器中的值,则可以发生中断。由于有三个模块,所以可以同时进行三个定时器中断而基于同一个时钟。
③、高速脉冲输出:与软件定时器基本相同,只不过在相同的时候会引起一个引脚的翻转,可以做非常好的蜂鸣器。但是每次要重新输入定时器的值。
④、可调制脉冲输出
5、按键消抖:统计一段时间内电平从而确定这一段时间是高电平还是低电平,并记录前一状态的电平状态,从而得到是否有一个上升沿或是下降沿。
在这里插入图片描述
6、如何按规范编写程序:
a、保证结构简明、逻辑清晰、不易出错
b、计算效率高
c、方便调试、容易验证
7、如何寻找计算机程序一般规律?做到更好代码复用?
a、哪些仅与CPU相关?
b、哪些仅与“电路板”相关?
c、硬件层如何抽象?
d、方法、算法如何抽象?
e、不同应用、多应用的程序接口与程序调度问题

猜你喜欢

转载自blog.csdn.net/qq_40851744/article/details/106436670