微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > R8/1B 学习板--IAR下的位变量定义、中断、开关中断

R8/1B 学习板--IAR下的位变量定义、中断、开关中断

时间:10-02 整理:3721RD 点击:

  1. #include<stdbool.h>       //位变量,可以看到里位变量是怎么定义的,
  2. 在stdbool.h中,定义了一个位宏,如果需要变量定义,就是如下:
  3. bool abit;
  4. abit就是一个位变量了,这种方法简单,但是在多个位的时候不好处理,比如需要一批位变量
  5. 初始化的时候。
  6. 还可以采用如下方法:
  7. typedef struct
  8. {
  9.     unsigned char no0:1;
  10.     unsigned char no1:1;
  11.     unsigned char no2:1;
  12.     unsigned char no3:1;
  13.     unsigned char no4:1;
  14.     unsigned char no5:1;
  15.     unsigned char no6:1;
  16.     unsigned char no7:1;
  17.   } __BIT8 ;
  18. volatile union { unsigned char strack; __BIT8 strack_bit; } ;
  19. union { unsigned char sk; __BIT8 sk_bit; } ;
  20. 定义位:
  21. #define  mflag        strack_bit.no0

  22. volatile union { unsigned char strack; __BIT8 strack_bit; } ;
  23. 中加上VOLATILE,如果发现给编译器优化掉,就一定要加上,
  24. strack  就是一个可按位操作的变量,
  25. strack=0;就可以把所有8个位全部清零,比起BOOL方便一些。

  26. IAR,写中断函数,与别的单片机没有什么差别,

  27. #pragma  vector=0x16
  28. __interrupt  void tx_irq(void)
  29.   {
  30.    Sec20ms++;
  31.     if(Sec20ms>50)
  32.       {
  33.        p1_1=!p1_1;
  34.       Sec20ms=0;
  35.       }
  36.    }
  37. vector=0x16  0X16是中断号,tx_irq(void) 是中断函数名,名字随你起。

  38. IAR下的绝对定义,比如你想把一个数组定义在一个DATA FLASH,
  39. 按如下操作:
  40. const unsigned char PWord @0x2BFE;  PWord是一个常量,@0x2bfe是一个绝对地址。
  41. 数组定义:

  42. const unsigned char buf1[2046] @0x2400 ={1,1,1};
  43. {1,1,1}是给数组初值。

  44. #include<intrinsics.h>   中定义一些实用宏,最常用的就是开、关中断了,如下:
  45. __disable_interrupt()  //禁止中断
  46. __enable_interrupt()
  47. 这样太长了,写起来烦,可以按如下定义成自己习惯的:
  48. define    di() __disable_interrupt()  //禁止中断
  49. #define  ei() __enable_interrupt()

复制代码


正在研究。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top