- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MSP430intrinsics.h详解
MSP430intrinsics.h详解
来源:智拓仪器杭州精诚电子工作室
1.1.1 扩展关键字
1. asm 也可以写成 _asm。功能是在c程序中直接嵌入汇编语言。 asm(“string”); 其中string必须是有效的汇编语句。
2. __interrupt 放在函数前面,标志中断函数。下面这段程序是异步串行口UART0的接受中断函数。UART0RX_VECTOR为异步串行口UART0的接受中断向量。 举例: #pragma vector=UART0RX_VECTOR __interrupt void UARTO_R(void) { TXBUF0=RXBUF0; }
3. __monitor 放在函数前面,功能是当这一函数执行的时候自动关闭中断。应该尽量缩短这样的函数,否则,中断事件无法得到及时的响应。
4. __no_init 放在全局变量前面,功能是使程序启动时不为变量赋初值。
5. __raw 编译中断函数时,编译器会自动生成一段代码,首先保存当时所用到CPU内寄存器的内容,退出中断程序时再进行恢复。将__raw放在中断函数前可禁止保存CPU内寄存器的过程,当然退出时也不会恢复。是否为中断函数使用此关键字需要更具具体情况而定。
6. __regvar 放在变量前面,作用是声明变量为寄存器变量。可以用于整数、指针、32位浮点数以及只含有一个元素的结构和联合体。寄存器变量的地址只能为R4或者R5,也不能使用指针指向这个寄存器变量,而且必须用__no_init禁止初始化。 如: __regvar __no_init unsigned char q0 @ __R4; 其他不常用的关键字还有:__data16、__intrinsic、__noreturn、__root、__task、__word16。
1.1.2 内部函数
1. __bcd_add_short Unsigned short __bcd_add_short(unsigned short,unsigned short); 功能:两个16为BCD格式的数字相加,返回和。
2. __bcd_add_long Unsigned long __bcd_add_long(unsigned long,unsigned long); 功能:两个32位BCD格式的数字相加,返回和。
3. __bcd_add_long_long 功能:两个64位BCD格式的数字相加,返回和。
4. __bic_SR_register Void _bic_SR_register(unsigned short); 功能:将CPU中SR寄存器中的某些位清零。其参数为屏蔽码,需要清零的位为1。
5. __bic_SR_register_on_exit Void __bic_SR_register_on_exit(unsigned short); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中得某些位清0.其参数为屏蔽码,需要清零的位为1.
6. __bis_SR_register Void __bis_SR_register(unsigned short); 功能:将CPU中SR寄存器中得某些位置1.其参数为屏蔽码,需要置1的位为1.
7. __bis_SR_register_on_exit Void __bis_SR_register_on_exit(unsigned short); 功能:用于一个中断函数或者不可中断函数(标志为__monitor)返回时,将CPU内SR寄存器中得某些位置1.其参数为屏蔽码,需要置1的位为1.
8. __disable_interrupt Void __disable_interrupt(void); 功能:关闭全局中断。先执行DINT指令,关闭全局中断,然后再执行NOP指令。空指令是为了确保关闭了全局中断之后再执行下面的程序。
9. __enable_interrupt Void __enable_interrupt(void); 功能:使用_EINT()指令打开全局中断。
10. __even_in_range Unsigned short __even_in_range(unsigned short value,unsigned short upper_limit);
功能:只能和switch语句结合使用,判断value是否为偶数且小于等于upper_limit.
举例:
Unsign
您可能关注的文档
- 12经络时刻表.doc
- 12春《组织行为学》作业2试题与答案.doc
- 10种缩小毛孔方法.doc
- 13-高血压患者睡眠障碍原因分析与护理干预.doc
- 13种最有效促销方法.doc
- 13种音乐格式介绍与对比.doc
- 13种药足浴方法功效好处及注意事项.doc
- 150个医护人员必须掌握知识.doc
- 150个护理必须掌握知识.doc
- 150个非常简单有用生活小常识。.doc
- 中考语文复习专题二整本书阅读课件.ppt
- 中考语文复习积累与运用课件.ppt
- 2025年初中学业水平考试模拟试题(二)课件.ppt
- 四川省2015届理科综合试题48套第12套.pdf
- 【课件】战争与和平—美术作品反映战争+课件-2024-2025学年高中美术湘美版(2019)美术鉴赏.pptx
- 【课件】青春牢筑国家安全防线 课件 2024-2025学年高中树立总体国家安全观主题班会.pptx
- 【课件】原始人的创造+课件高中美术湘美版(2019)美术鉴赏.pptx
- 上海证券-美容护理行业周报:流量加快去中心化,强运营头部品牌影响较小 -2024-.pdf
- T_CSEIA 1005—2023_能源工业互联网平台数据治理要求.pdf
- T_CDSA 504.16-2023_急流救援技术培训与考核要求.pdf
文档评论(0)