iar环境下c语言编程,IAR环境下的msp430c语言编程.docx

本文介绍了IAR环境中MSP430单片机编程时的一些关键C语言扩展关键字,如`asm`、`__interrupt`、`__monitor`等,并展示了如何使用它们进行中断和寄存器操作。同时,文中还提及了一些内部函数,如BCD数相加函数和中断返回时的SR寄存器操作函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MSP430系列单片机实用C语言程序设计

扩展的关键字

asm

也可以写成__asm。功能是在C程序中直接嵌入汇编语言。

语法:asm(“string”);其中string必须是有效的汇编语句。

__interrupt

放在函数前面,标志中断函数。下面这段程序是异步串行口UART0的接收中断函数。UART0RX_VECTOR为异步串行口UART0的接收中断向量。

举例:

#pragma vector=UART0RX_VECTOR

__interrupt void UART0_R(void) //UART0接收中断

{

TXBUF0=RXBUF0;

}

__monitor

放在函数前面,功能是但这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。

__no_init

放在全局变量前面,功能是使程序启动时不为变量赋初值。

__raw

编译中断函数时,编译器会自动生成一段代码,首先保存当时所用到CPU内寄存器的内容,退出中断程序时再进行恢复。将__raw放在中断函数前可以禁止保存CPU内寄存器的过程,当然退出时也不会恢复。是否为中断函数使用此关键字要根据需要而定。

__regvar

放在变量前面,作用是声明变量为寄存器变量。可以用于整数、指针、32位浮点数以及只含有一个元素的结构和联合。寄存器变量的地址只能为R4或者R5,也不能用指针指向这个寄存器变量,而且必须用__no_init禁止初始化。如:

__regvar __no_init unsi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值