PIC17CXX器件的C语言中断保存/恢复语句

发布者:RadiantDreams最新更新时间:2017-12-06 来源: eefocus关键字:PIC17CXX  C语言  中断保存  恢复语句 手机看文章 扫描二维码
随时随地手机看文章

// File name: int17cxx.h  

/* Interrupt context save and restore for PIC17C42  

PIC17C42A, PIC17C43, PIC17C44, PIC17C752, PIC17C756  


__Wimage变量可能并不需要保存,该变量出现在所提供的延时程序中,用于计算指针/阵列地址。  

FSR0寄存器也用于计算指针/阵列RAM的地址。  

这些变量是否需要保存取决于代码的复杂程度。根据代码要求,可修改这些指令。  

*/  

#pragma option -l  

#asm  

MACRO PUSH  

MOV FP ALUSTA, ALUSTA ;save flags  

MOV fp __WImage,WImage  

MOV pf WREG,WREG  

MOV pf BSR,BSR  

MOV pf FSR0,FSR0  

ENDM  

#endasm  

#define save_context #asm ( PUSH)  

#asm  

MACRO POP  

MOV fp FSR0,FSR0  

MOV fp BSR,BSR  

MOV fp WREG,WREG  

MOV fp WImage,__WImage  

MOV fp ALUSTA,ALUSTA ;restore flags  

ENDM  

#endasm  

#define restore_context #asm ( POP)  

#pragma option +l  

标题: PIC16CXX 4K字器件的C语言中断保存/恢复语句  



解答:  

// File name: int16c4k.h  

/* PIC16C642, PIC16C662, PIC16C63, PIC16C65, PIC16C65A, PIC16C73, PIC16C73A, PIC16C74, PIC16C74A, PIC16C923, PIC16C924, PIC14000, PIC16C66, PIC16C67, PIC16C76, PIC16C77器件的中断保存和恢复语句。  

这些例程主要用于PIC14架构中程序存储器为4k或8k的器件中。  

__Wimage变量可能并不需要保存,该变量出现在所提供的延时程序中,用于计算指针/阵列地址。  

FSR0寄存器也用于计算指针/阵列RAM的地址。  

这些变量是否需要保存取决于代码的复杂程度。根据代码要求,可修改这些指令。  

*/  

#pragma option -l  

#asm  

MACRO PUSH  

MOV wf WREG ;save copy w register  

MOV f STATUS,w  

bcf STATUS,RP0 ;set bank to 0  

bcf STATUS,RP1 ;  

MOV wf STATUS ;save status  

MOV f FSR,w ;  

MOV wf FSR ;save copy of FSR  

MOV f PCLATH,w ;  

MOV wf PCLATH ;save copy of PCLATH  

MOV f __WImage,w ;  

MOV wf WImage ;save copy of __WImage  

ENDM  

#endasm  

#define save_context #asm ( PUSH)  

#asm  

MACRO POP  

bcf STATUS,RP0 ;ensure bank is set to 0  

bcf STATUS,RP1 ;  

MOV f WImage,w ;  

MOV wf __WImage ;restore __WImage  

MOV f PCLATH,w ;  

MOV wf PCLATH ;restore PCLATH  

MOV f FSR,w ;  

MOV wf FSR ;restore FSR  

MOV f STATUS,w  

MOV wf STATUS ;restore status and bank information  

swapf WREG,f ;  

swapf WREG,w ;restore working register  

ENDM  

#endasm  

#define restore_context #asm ( POP)  

#pragma option +l  

标题: PIC16CXX 2K字器件的C语言中断保存/恢复语句  

关于 中断 发表日期: 10/25/1997  

解答:  

// File Name: int16C2k.h  

/* PIC16C558, PIC16C622, PIC16C61, PIC16C62, PIC16C62A, PIC16C64, PIC16C64A, PIC16C710, PIC16C71, PIC16C711, PIC16C72, PIC16F83, PIC16F84器件的中断保存和恢复语句。  

这些例程主要用于PIC14架构中程序存储器为2k或更小的器件中。  

__Wimage变量可能并不需要保存,该变量出现在所提供的延时程序中,用于计算指针/阵列地址。  

FSR0寄存器也用于计算指针/阵列RAM的地址。  

这些变量是否需要保存取决于代码的复杂程度。根据代码要求,可修改这些指令。  

*/  

#pragma option -l  

#asm  

MACRO PUSH  

MOV wf WREG ;save copy w register  

MOV f STATUS,w  

bcf STATUS,RP0 ;set bank to 0  

MOV wf STATUS ;save status  

MOV f FSR,w ;  

MOV wf FSR ;save copy of FSR  

MOV f __WImage,w ;  

MOV wf WImage ;save copy of __WImage  

ENDM  

#endasm  

#define save_context #asm ( PUSH)  

#asm  

MACRO POP  

bcf STATUS,RP0 ;ensure bank is set to 0  

MOV f WImage,w ;  

MOV wf __WImage ;restore __WImage  

MOV f FSR,w ;  

MOV wf FSR ;restore FSR  

MOV f STATUS,w  

MOV wf STATUS ;restore status and bank information  

swapf WREG,f ;  

swapf WREG,w ;restore working register  

ENDM  

#endasm  

#define restore_context #asm ( POP)  

#pragma option +l 


关键字:PIC17CXX  C语言  中断保存  恢复语句 引用地址:PIC17CXX器件的C语言中断保存/恢复语句

上一篇:PIC测试在睡眠下的消耗电流
下一篇:PIC单片机音乐播放程序

推荐阅读最新更新时间:2024-03-16 15:48

Solid Sands和台湾汉芝电子强强联合
Solid Sands和台湾汉芝电子强强联合,通过高性能C语言编译器加速MCU微控制单元创新 C和C++编译器与库测试及认证领域的全球领导者Solid Sands 近日宣布,家用微控制器和安全 IC 的创造者——台湾汉芝电子已在其下一代微控制单元(MCU)编译器设计中采用了 SuperTest 编译器测试和验证技术。 汉芝电子主要为物联网、工业自动化、智能家居和消费电子等安全密集型、高增长细分市场提供MCU技术 ,目前已向市场交付了超过了1亿颗芯片。汉芝电子将使用SuperTest来确保这些微控制器的编译器达到最高质量水平。SuperTest可支持实现独立嵌入式C语言, 为汉芝电子创新的微控制器和安全 ASIC 提供
[嵌入式]
Solid Sands和台湾汉芝电子强强联合
同步串口spi的c语言编程
#include io8535v.h #include macros.h #define uchar unsigned char #define uint unsigned int uchar Table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar Da ta ={0,0,0,0}; void DelayMs(uint i) {uchar j; for(;i!=0;i--) {for(j=2000;j!=0;j--) {;}} } void Display(uchar *p) {uchar i,sel=0x01; for(i=0;i 4;i++)
[单片机]
C语言和单片机有什么关系?
学习单片机之前要学什么?提起这个就想起我当年开始学习单片机的血泪史了。 08年我加入学校的电子实验室,为08年的全国电子大赛做准备。 08年的电子大赛分类3类, 硬件设计类、单片机软件类、产品的调试动手类 。 现在的大赛应该有所改动。 我选择的是软件类,选择这个的原因是我觉得这个更加的神秘,就是这个神秘感让我对软件更加的有兴趣。 刚开始真的是一窍不通,我 买了一本C语言书 ,独自学习了 2个月 ,做了 3本笔记 ,然后 又学习了1个月的数字电路 ,到这个时候,我都快奔溃了,3个月过去了,还是啥都不懂! 这个时候我已经做好放弃的准备了,最后想想:自己选的路,跪着也要走完。 正好那段时间每天也闲的蛋疼,就抱着边玩边学的态度,说出来你可
[单片机]
C语言函数的调用
在一个程序的编写过程中,随着代码量的增加,如果把所有的语句都写到 main 函数中,一方面程序会显得的比较乱,另外一个方面,当同一个功能需要在不同地方执行时,我们就得再重复写一遍相同的语句。此时,如果把一些零碎的功能单独写成一个函数,在需要它们时只需进行一些简单的函数调用,这样既有助于程序结构的清晰条理,又可以避免大块的代码重复。 在实际工程项目中,一个程序通常都是由很多个子程序模块组成的,一个模块实现一个特定的功能,在 C 语言中,这个模块就用函数来表示。一个 C 程序一般由一个主函数和若干个其他函数构成。主函数可以调用其它函数,其它函数也可以相互调用,但其它函数不能调用主函数。在我们的 51 单片机程序中,还有中断服务函数,是
[单片机]
STC12C2052AD单片机AD转换C语言程序
首先:这个小程序搞了我两天,加上焊板子共三天,当然是业余时间。也有24个小时了。 我瞪着电脑两个晚上,我拆了装,装了拆(下载程序不在本板子上)。最后,就在今天!(“今”读四声)18点。可让我找到问题所在了!搞了两个晚上,AD转换控制流程,根本没错!!!!啊!! 错就错在一个小地方,打死都想不到的地方。 具体错在哪,请在下文中找!!!! 功能:STC12C2052AD AD转换C程序 +PWM输出功能 成功使用。 应用:AD检测电压进行过欠压保护(继电器控制)+PWM把直流电压斩波成脉动直流。 板子功能:给手机电池充电。 降压用的LM317,小电流应用应该够了。没时间去买开关管,就用的9013开关。 图纸:
[单片机]
STC12C2052AD单片机AD转换<font color='red'>C语言</font>程序
LCD1602液晶显示(51单片机c语言
效果图: 电路图: #include reg52.h #include intrins.h //包含_nop_()函数定义的头文件 #define uchar unsigned char #define uint unsigned int sbit RS=P2^5; //寄存器选择位 sbit RW=P2^6; //读写选择位 sbit E=P2^7; //使能信号位 //sbit BF=P0^7; //忙碌标志位 const uchar string1 ={ mazirong }; const uchar string2 ={ TEL:13297961386 }; /**************************
[单片机]
LCD1602液晶显示(51单片机<font color='red'>c语言</font>)
单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解
位运算是指按二进制位进行的运算。在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断。 C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。 | 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1。 按位异或 若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真) ~ 取反 ~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。 左移 左移运算符是用来将一个数的各二进制位全部左移N位,右补0
[单片机]
单片机avr <font color='red'>c语言</font>位运算 与或非 异或逻辑 运算介绍 详解
基于C语言设置TMS320 DSP中断向量表
摘要: 随着DSP芯片应用的不断深入,用C语言开发DSP芯片,不仅可以使DSP芯片的开发速度大大提高,也使得程序的修改和移植变得十分方便。C语言设置TMS320系列DSP中断向量表是高级语言开发DSP的一个具体应用。 1、引言 DSP(数字信号处理器)自二十世纪70年代末80年代初诞生以来,得到了突飞猛进的发展,在信号处理、通讯、雷达等方面应用越来越广泛,而且开发手段和开发设备也越来越多样化。其中C语言在DSP开发应用中起着越来越重要的作用,以C语言编写的DSP应用程序具有可读性、可移植性,易于维护和修改。另外在DSP应用系统中,中断是完成数据传递、实时处理等的重要手段,因而用C语言完成对DSP中断设置是DSP开发的重要
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved