单片机基础(四):C51对C语言的扩展

C51对C语言的扩展

C51与标准C语言在数据结构I/O处理函数等方面与标准C语言存在差别


数据结构

sfr、sfr16 特殊功能寄存器型变量

  • 特殊功能寄存器(SFR,Special Function Register)在单片机中有很重要的作用,常见的SFR是8位,所以sfr16用于表示16位的SFR
  • 定义方式为 变量类型 变量名 = 地址
    如 sfr P1 = 0x90
  • 所有的sfr、sfr16型变量都已定义在"reg51.h"、"reg52.h"中

bit 、sbit 位变量

  • bit 、sbit 型变量在内存中都只占一个二进制位
  • bit 用于定义一般可处理位的变量,sbit 用于定义特殊功能寄存器中的可位寻址的变量
  • sbit 可用绝对位地址、相对位地址、相对sfr变量位位置定义
    sbit CY = 0xD7 sbit CY = 0xD0^7 sbit CY = PSW^7

可定义存储器类型
  可指明定义的变量分配到哪一个存储器中
  完整定义格式为
在这里插入图片描述
  存储种类 数据类型 存储器类型 变量名 = 初值
在这里插入图片描述


I/O处理


中断函数
  中断是单片机的重要特性,C51在C语言函数的基础上补充了中断函数的概念

  • 中断函数的定义
      interrupt m修饰符,表明某个函数为中断响应函数,编译时将该函数将该函数转化为中断响应函数,根据 m 的取值将函数地址存放在程序存储器的中断对应的位置
  • 中断函数不能传递参数,不能有返回值
  • 中断函数不能被其他函数调用
  • 若中断函数调用其他函数,所调用的函数使用的寄存器必须与中断函数相同

单片机基础(五):中断

在这里插入图片描述

定义形式如下

void main(){
	......
}

void Int0_isr interrupt 0{
	......
}

2019/2/24

原文地址:https://www.cnblogs.com/kafm/p/12721825.html