第一章单片机入门知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛大学-TI 大学生创新中心 傅强
20
2021/2/22
1.3.5 中断
中断的作用是快速响应事件 430中几乎所有“资源”都带中断,为的是休眠cpu后,
唤醒CPU。 Cpu发送指令给模块,然后休眠。模块执行完毕后,
中断唤醒CPU。 中断向量表位于ROM最高段0xFE00~0xFFFF(512B) 特别注意!430的中断没有优先级
NMI_VECTOR (14 * 2u) /* 0xFFFC Non-maskable */
RESET_VECTOR (15 * 2u) /* 0xFFFE Reset */
青岛大学-TI 大学生创新中心 傅强
22
2021/2/22
中断的具体过程
1. 事先将中断服务程序入口地址装入中断 向量表。
2. 中断发生后,如果中断被允许(可屏蔽 中断),CPU将当前程序地址和CPU状态 寄存器SR压入堆栈。
第一章单片机入门知识
2021/2/22
1
第一章 单片机入门基础
2021/2/22
2
前沿
为什么选MSP430单片机来讲?
1、《MSP430系列单片机系统工程设计与实践》 这本书是我见过的最好的关于单片机的书, 没有之一。
2、MSP430单片机的作为一款RISC处理器,其编 程思想可方便的移植到其他“高性能”处理 器上。
/*0xFFE0 基础定时器)
PORT2_VECTOR (1 * 2u) /* 0xFFE2 P2 */
PORT1_VECTOR (4 * 2u) /* 0xFFE8 P1 */
TIMERA1_VECTOR (5 * 2u) /* 0xFFEA Timer A CCR1/2*/
TIMERA0_VECTOR (6 * 2u) /* 0xFFEC Timer A CCR0 */
青岛大学-TI 大学生创新中心 傅强
10
2021/2/22
1.2 MSP430单片机开发软件入门
一般用IAR430软件 工程管理、程序编辑、代码编译下载、仿真调
试 工程管理:管理外部函数、头文件。。。 程序编辑:写代码 编译:替程序员处理所有打杂的事情C->汇编 调试:真正的考验水平的地方,不是所有单片
② 后缀带A的型号有硬件乘法器(自动使用)
青岛大学-TI 大学生创新中心 傅强
16
2021/2/22
1.3.3 位操作
精简指令处理器如何写IO口?
P2OUT = P2OUT | 0x01; //P2.0置高 按位或
P2OUT |=0x01;
//一般均简写成这样
P2OUT &=~0x01;
//P2.1置低 按位与
3. 跳转到中断服务程序入口,备份寄存器 入堆栈。
4. 开始执行中断服务程序。
#define URXIE0
(0x40)//在MSP430x42x.h
#define UTXIE0
(0x80)//头文件中已有
IE1 |=URXIE0+UTXIE0
以后我们接触高级处理器的程序中,大部分都是这么 写,不会像51里面直接写TMOD=0x20这样
青岛大学-TI 大学生创新中心 傅强
19
可实现固件更新。 ④ rom中的升级代码->复制到ram运行->擦除rom->
升级rom
青岛大学-TI 大学生创新中心 傅强
7
2021/2/22
科普:ROM、RAM、DRAM、SRAM、EEPROM、FLASH
存储器
挥发性存储器
RAM
SRAM
速度最高 最贵
DRAM 要定时刷新
计算机CPU 一二级缓存
Main() { ... }C语言源文件
C语言、编译器和机器码之间的关系
VC编译器
PC(8086)机器码
ICC430编译器
MSP430单片机机器码
Keil-C51编译器
51单片机机器码
在写C语言的过程中,尽量消除不同CPU的 差异,或者将差异集中到一个地方做修改,那 么就能方便的实现代码移植。 我们现在写C程序,就必须按此要求严格要 求自己。 这样才能一通百通,才能减少重复劳动。
2021/2/22
特别注意:使用“|=”赋值不会影响其他位, 但要搞清楚是不是要先对标志位清0。
例如:PWM控制器输出模式有3个控制位,可 以表示8种模式。头文件中定义了 OUTMODE_0~OUTMODE_7宏定义,000-111。
TACCTL1 |= OUTMODE_3;//011 ... TACCTL1 |= OUTMODE_6;//110 实际效果是111,也就是模式7
3、MSP430单片机属于混合信号处理器,资源极 其丰富,不仅有利于全面学习硬件知识,而 且430本身就非常有用。
青岛大学-TI 大学生创新中心 傅强
3
2021/2/22
1.1 初识MSP430单片机
MSP430:低功耗之王,水果电池驱动 1、为什么我们在乎功耗? ① 凡是以电池为电源的电子设备都看重低功耗。 ② 几乎所有的单片机会标榜自己有低功耗方面
#pragma vector=BASICTIMER_VECTOR __interrupt void BT_ISR(void)
{ ...
}
青岛大学-TI 大学生创新中心 傅强
21
2021/2/22
Msp430x42x头文件中的中断向量表
#define BASICTIMER_VECTOR (0*2u)
USART0TX_VECTOR (8 * 2u) /* 0xFFF0 串口发送 */
USART0RX_VECTOR (9 * 2u) /* 0xFFF2 串口接收*/
WDT_VECTOR (10 * 2u) /* 0xFFF4 Watchdog Timer */
SD16_VECTOR (12 * 2u) /* 0xFFF8 16位ADC */
的设计。 2、MSP430为什么可以成为低功耗之王? ① 在硬件上,cpu和不用的模块可以休眠 ② 在软件上,必须设计恰当的休眠和唤醒 ③ 430是实现低功耗的必要条件,非充分条件。
青岛大学-TI 大学生创新中心 傅强
4
2021/2/22
1.1.1 MSP430单片机的应用前景
便携设备,高集成度、小型化。 野外安置的终身电池设备。 无需额外供电的自供电设备。 高精度测量、控制领域。 当普通单片机用。
如何理解寄存器操作?
① 如果设计模拟电路算是天才干的事情,那么操作 单片机的寄存器就算是傻瓜干的事情。
② 处理器把能干的事全干了,需要人过问的事情, 通过一系列开关让人来选择,所以这是傻瓜就能 干的事情
越是功能强大的处理器,需要配置的寄存器 越多。
处理器说明书就是用来查寄存器功能的
青岛大学-TI 大学生创新中心 傅强
青岛大学-TI 大学生创新中心 傅强
9
2021/2/22
1.1.3 MSP430单片机最小系统
一般单片机最小系统需要什么? 电源、晶振、复位、下载/仿真接口 MSP430FE425自带片内数控时钟(DCO),掉
电复位电路(BOR) 一般讲究一点都需要“电源监视芯片” 内部时钟一般不如晶振精确 可以外接手表晶振32.768,然后倍频 JTAG、SBW、可下载+调试,BSL只能下载
long int x;
int a;
x=a*1000;//a和1000都是int型,a>65溢出
来自百度文库应改为
x=a*long(1000)
或
x=(long)a*1000
青岛大学-TI 大学生创新中心 傅强
15
2021/2/22
小数的处理
例如,温度的最后计算公式为:
Deg_C=ADC*1.32/1.25-273
计算机 内存条
EPROM 紫外线擦写
非挥发性存储器
可擦写
EEPROM 电擦写
FLASH 电擦写
绝种ing
贵,慢 前途无量
只读 ROM PROM
绝种了
6个晶体管构成 一个晶体管+
1bit
电容充放电
Floating gate
transister
a)我们现在用的51,都是flash rom的,但是内部没有
18
2021/2/22
宏定义帮助我们理解抽象的数字
查说明书,找到控制串口收发的是IE1寄存器的最高 两位,位名称分别是URXIE0和UTXIE0,我们可以用下 面的赋值。
IE1 |= BIT6
//URXIE0开串口收中断
IE1 |= BIT7
//URXIE1开串口发中断
为便于记忆和理解,头文件中有如下宏定义:
volatile int b;//不被优化
_no_init int c; //不对其初始化
为什么要慎重使用全局变量?
青岛大学-TI 大学生创新中心 傅强
14
2021/2/22
1.3.2 数学运算
尽可能避免浮点数运算。
① 运算慢、非常慢。占用RAM多。
② 所以应尽量避免使用浮点数float。
防止定点数溢出。
青岛大学-TI 大学生创新中心 傅强
6
2021/2/22
1.1.2 MSP430单片机的特点
采用冯∙诺依曼结构(普林斯顿结构),程序指令 存储器和数据存储器统一编址。
① 举例:实现存储器中两数据相乘,要经过3个步 骤,通过总线取两个数据和取出指令(干什么) 到CPU。
② 如果是哈佛结构,数据总线和指令总线分开。 ③ 430可以在ram里跑程序,加上具有flash控制器,
P2OUT |=BIT0;
If(P1IN&BIT5)
P2OUT |=BIT0;
If(P1IN&(BIT5+BIT6))
P2OUT |=BIT0;
If(P1IN&BIT5)
Key=1;
//读P1.5值赋给Key
else
Key=0;
青岛大学-TI 大学生创新中心 傅强
17
2021/2/22
1.3.4 寄存器操作
P2OUT ^=0x04;
//P2.2取反 按位异或
#define BIT0 (0x01)
//宏定义
......
P2OUT |=BIT0;
//P2.0置高
P1OUT &=~(BIT1+BIT2+BIT3) //P1.1 P1.2 P1.3置低
精简指令处理器如何读IO口?
char Key;
If((P1IN&BIT5)==0)
flash控制器,所以需要EEPROM存实时数据。
b) Msp430带flash控制器,单片机自己就能擦写flash,
所以不用EEPROM。
青岛大学-TI 大学生创新中心 傅强
8
2021/2/22
MSP430FE425A资源 1. 8M/s处理速度 2. 512RAM(数据)+16KB Flash(程序代码) 3. 内置Flash控制器,剩余Flash可存数据。 4. 内置时钟管理单元,可内部倍频 5. 3路同步采样、差分输入、32倍程控增益放大器的16位ADC 6. 温度传感器 7. 1.2V基准源和输出缓冲器 8. 128段LCD驱动器 9. 增强UART串口 10. 看门狗 11. BasicTimer定时器 12. 16位TimeA定时器,3路捕获和2路PWM 13. 内置BOR复位电路 14. 14个双向可中断IO口 15. 内置电能计量模块 16. 后缀带A的,比如FE425A带硬件乘法器
青岛大学-TI 大学生创新中心 傅强
13
2021/2/22
1.3.1 变量
我们为什么要定义各种变量?
定义短字节变量有哪些好处和坏处?
定义长字节变量有哪些好处和坏处?
一些特殊的关键字
const unsigned char Table[7]={1,2,3,4,5,6,7}
static int a;//本地全局变量
机都支持调试,这是要硬件支持的。
青岛大学-TI 大学生创新中心 傅强
11
2021/2/22
全速执行、单步执行。。。 执行到光标处 设置断点(在程序中加一个空操作,然后用
来设断点) 查看变量寄存器 查看调用函数关系
青岛大学-TI 大学生创新中心 傅强
12
2021/2/22
1.3 MSP430单片机C语言基础
青岛大学-TI 大学生创新中心 傅强
5
2021/2/22
1.1.2 MSP430单片机的特点
多时钟系统 ① CPU时钟、功能模块时钟、休眠唤醒时钟 ② 软件设置时钟 16位RISC处理器,单指令周期 模块化结构 ① 各模块完全独立,不需要cpu干涉 ② 避免了cpu与外部模块复杂的数据通信 ③ 学会最贵的430,等于会用了全系列430
为避免浮点数可改为:
Deg_C=(long)ADC*132/125-273
如需保留1位小数,则:
Deg_C=(long)ADC*1320/125-2730 //扩大10倍
程序中加上明确注释
在显示时,将小数点移位即可
减小乘除法
① 取平均时,尽量取2、4、8等2次幂,这样可以用 移位代替乘除(可编译器自动)