- 打卡等级:初来乍到
- 打卡总天数:7
- 最近打卡:2024-07-01 10:22:38
注册会员
- 积分
- 69
|
发表于 2024-7-1 11:51:13
|
显示全部楼层
第十一、十二集 单片机C语言程序设计导入摘要笔记
本帖最后由 YKB345 于 2024-7-1 11:53 编辑
C51对ANSI C的拓展经过老师的讲解和我在网上查找的资料我汇总了一下这两节课的内容
存储器和寄存器关键字:
data:直接寻址区,用于内部RAM的低128字节(00H-7FH)。
idata:间接寻址区,包括整个内部RAM区(00H-FFH)。
bdata:可位寻址区,主要用于20H-2FH区域。
xdata:可指定多达64KB的外部直接寻址区,地址范围0000H-0FFFFH。
pdata:能访问1页(256Bytes)的外部RAM,主要用于紧凑模式。
sfr(特殊功能寄存器声明):用于声明和访问8051提供的128Bytes的SFR寻址区,例如sfr P0=0x80;表示PO口地址为80H的常数。
sbit:用于访问可位寻址的特殊功能寄存器中的某个位,例如sbit EA=0xAF;指定第0xAF位为EA,即中断允许。
中断和寄存器组:
interrupt:中断函数声明关键字,如void serial_ISR() interrupt 4 [using 1];表示一个中断服务程序,中断号为4,使用寄存器组1。
using:寄存器组定义关键字,用于指定中断服务程序使用的寄存器组。
数据类型:
除了ANSI C中的基本数据类型(如char, int, float等)外,C51还增加了与硬件直接相关的特殊数据类型,如上述提到的sfr和sbit。
指针:
C51支持一般指针(Generic Pointer)和存储器指针(Memory_Specific Pointer),允许开发人员更精确地控制数据的存储和访问。
函数调用和参数传递:
由于8051体系结构和编译器的限制,C51在函数参数传递上与ANSI C有所不同。在C51中,函数参数通常通过寄存器或固定的内存位置传递,而不是通过堆栈。
函数指针:
C51的函数指针使用也有其特殊性。由于8051寄存器数量的限制,函数指针最多只能传递3个参数。如果需要传递更多参数,可以使用结构体和指针作为参数。
跳转和程序执行:
C51允许程序员直接跳转到特定的地址执行代码,这在引导程序设计和调试时非常有用。
其他特性:
C51还提供了其他与硬件紧密相关的特性,如位操作、I/O控制、定时器和计数器配置等,这些功能在ANSI C中并没有直接对应。
同时老师还进行了代码的讲解
|
|