凌阳单片机C语言(网站整理)
凌阳单片机简介

第1章 SPCE061A单片机简介 (1)1.1凌阳16位单片机 (1)1.2 SPCE061A简介 (2)1.2.1 总述 (2)1.2.2 性能 (2)1.2.3 结构概览 (3)1.2.4 芯片的引脚排列和说明 (4)1.2.5 特性 (6)1.2.6 SPCE061A最小系统 (7)1.2.7 SPCE061A开发方法 (8)1.2.8 应用领域 (10)北阳电子内部技术资料0第1章 SPCE061A单片机简介1.1 凌阳16位单片机随着单片机功能集成化的发展,其应用领域也逐渐地由传统的控制,扩展为控制处理、数据处理以及数字信号处理(DSP,Digital Signal Processing)等领域。
凌阳的16位单片机就是为适应这种发展而设计的。
它的CPU内核采用凌阳最新推出的µ’nSP™(Microcontroller and Signal Processor)16位微处理器芯片(以下简称µ’nSP™)。
围绕µ’nSP™所形成的16位µ’nSP™系列单片机(以下简称µ’nSP™家族)采用的是模块式集成结构,它以µ’nSP™内核为中心集成不同规模的ROM、RAM和功能丰富的各种外设接口部件,如图1.1所示。
图1.1µ’nSP™家族的模块式结构µ’nSP™内核是一个通用的核结构。
除此之外的其它功能模块均为可选结构,亦即这种结构可大可小或可有可无。
借助这种通用结构附加可选结构的积木式的构成,便可形成各种不同系列派生产品,以适合不同的应用场合。
这样做无疑会使每一种派生产品具有更强的功能和更低的成本。
µ’nSP™家族有以下特点:体积小、集成度高、可靠性好且易于扩展北阳电子内部技术资料1µ’nSP™家族把各功能部件模块化地集成在一个芯片里,内部采用总线结构,因而减少了各功能部件之间的连线,提高了其可靠性和抗干扰能力。
单片机网站大全

这里罗列了单片机学习的网站,有助于大家更好的学习单片机.凌阳语音单片机(New) /- 提供语音识别、播放、录制、LCD、USB接口、存储器,电子竞赛、毕业设计,实验箱、开发板及在线调试器。
楚浩单片机工作室/- 提供自制单片机开发工具的全套资料,单片机源程序和相关资料下载。
大中华工业自动化/- 工业控制产品性价介绍、软件编程、VSAT通讯技术、宽带技术、数据采集技术。
单片机产品开发设计中心/- 单片机产品开发设计,通信基站监控,LED电子显示屏,三洋空调远程测控,空调切换控制器,多功能单片机开发试验板,C51编程设计,CPLD设计开发及下载编程电缆。
单片机大世界/- 无线收发模块,超声波测距,单片机编程器,仿真器。
单片机的C语言/- 单片机的C语言,Keil C解密版下载。
单片机开发卡读写设备/- 单片机,读卡器,RC500。
单片机网战/- 硬件、软件、项目开发例子,资料下载。
提供FPGA/CPLD器件的设计套件、评估板、实验板、下载电缆等。
单片机学习网/- 单片机应用知识、cpld、其他电子的知识等。
单片机与电子制作/- 电子制作,单片机编程、电子产品、电路模块、研制样机。
单片机TCP/IP协议/- 用嵌入式的观点开发51兼容系列单片机TCP/IP协议。
实现了ARP、ICMP、UDP、TFTP、TCP、TELNET、HTTP等通讯协议。
得技通电子/- 从事单片机编程器、仿真器及各类实验板、不同封装IC SOCKET的生产和销售。
广州市华卡科技开发有限公司/- 烧录器,仿真器,软件更新,技术服务,技术交流。
海天电子网/- 电子技术;电脑;电脑技术;硬件;元器件;股票,;股票分析;股票分析软件等。
汉东单片机实验室/- 介绍和推广单片机技术的开发与应用。
机器人DIY /- 大家都希望能在娱乐中学习到一些知识,该网站是方便一些单片机学生通过“机器人”DIY 来增加动手能力和学习兴趣。
济南启东单片机研究所/- 单片机仿真机、编程器、实验仪、开关电源、微型打印机、集成电路、EPROM擦除器、交直流稳压电源、高精度DSP语音、图象处理平台等。
单片机C语言(模块一)

《单片机原理及应用(二)》模块一C51程序设计基础任务1:实例导航第二章C与80512.1 8051的编程语言1、8051的编程语言(四种):(1)BASIC语言(2)PL/M√(3)汇编语言√(4)C语言目前,汇编语言和C语言是广泛使用的两种单片机编程语言。
在未来的一段时间内,汇编语言和C语言还将同时存在,但从发展趋势看,C语言有逐渐取代汇编语言的可能。
最好的单片机编程者应是具有汇编语言基础,又精通C语言的。
2、C语言的优点(与汇编语言相比):(P41)(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有所了解(2)寄存器的分配、不同存储器的寻址及数据类型等细节由编译器管理(3)程序有规范的结构,由不同的函数组成,这种方式可使程序结构化(4)编程及程序调试时间显著缩短,从而提高效率(5)提供库函数,具有较强的数据处理能力3、8051单片机C语言(单片机C51语言)了解一下单片机的种类:(查资料)2.2 Cx51编译器编译:C语言源程序转换成机器语言目标程序的过程,叫做编译。
编译器:能自动完成编译过程的一种计算机软件。
(1)C语言编译器(标准C)(2)C51编译器(经典8051单片机)(3)C x51编译器(经典8051单片机及派生产品)Cx51编译器完全遵照ANSI C语言标准,支持C语言的所有标准特征。
另外,还增加了可以直接支持8051结构的特征。
典型产品:KILE套装工具软件----------uVision2 集成开发环境的使用(P 302)例2-1:用uVision2软件编译调试一个C51程序(HELLO.C)基本步骤:(1)创建一个新项目(建在一个新文件夹下)并为项目选择一个CPU(此时会自动加入启动文件)(2)创建新程序文件(或打开旧程序文件)此例中,打开c:\kile\c51\examples\hello(3)将源文件添加到项目中此时还可修改工具选项(4)编译和链接项目(Build Target命令):翻译和链接源文件,并生成一个可以载入到uvision2调试器进行调试的绝对目标模块。
单片机C语言程序设计实训100例(免费下载)

case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {
2 上海师范大学信息与机电工程学院—倪继锋
《单片机 C 语言程序设计实训 100 例---基于 8051 和 PROTEUS 仿真》案例
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { while(1) {
LEDቤተ መጻሕፍቲ ባይዱ~LED; DelayMS(150); } }
02 从左到右的流水灯
/* 名称:从左到右的流水灯 说明:接在 P0 口的 8 个 LED
从左到右循环依次点亮,产生走 马灯效果 */ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define u100 例---基于 8051 和 PROTEUS 仿真》案例
凌阳单片机 4.2单一功能模块程序编写的基本过程

Sunplus SPCE061A 微控制器单一功能模块程序编写的基本过程讲解目的了解SPCE061A单一模块编程的方法。
对单一模块编程进行归类,提高学习效率。
巩固一些基础知识,为后面的中断编程和系统编程打好基础。
从硬件到编程现在芯片都在追随SOC设计的潮流,把各功能模块设计到一个芯片上,实现一个系统。
SPCE061A正是这样的一颗芯片,硬件从结构上可划分为各功能模块,要彻底掌握SPCE061A的使用方法,首先要对各功能模块有清楚的认识,这决定了对它们的熟悉必需从对各功能模块的编程开始。
SPCE061A 包含的可编程功能模块内核UART SIO 定时器/记数器系统时钟A/D I/O D/A PWM LVD/LVRFlash 操作看门狗SPCE061A 包含的可编程功能模块内核与外界交互模块通讯模块时钟相关模块其它模块中断模块按类寻找编程共性从上面两页可以看到,SPCE061A的功能模块除中断模块外基本可以分为四大类,这四大类在编程时的程序结构基本类似,我们只要掌握了一个模块的编程,别的模块就可很快掌握。
把中断列出是因为这个模块的编程有别于另外的模块。
共性一:程序结构每个单一模块的编程,基本的程序结构是:1、初始状态的设置。
2、主循环中检测状态和进行分析,并执行结果。
3、清看门狗。
初始化模块的状态查询模块的状态处理清看门狗各功能模块汇编程序基本模板.define xxx xxxx .public _main;_main:…〔xxx〕=Rx…Loop:……Jmp loop各功能模块C语言程序基本模板#define xxx(volatile unsigned int *)xxxx Main(){…*xxx =xx;…While(1){…}}共性二:初始化里的控制寄存器设置每个单一模块的编程,基本的程序结构是:1、初始状态的设置。
2、主循环中检测状态和进行分析。
3、清看门狗。
共性三:主循环里的数据/控制寄存器查询与处理在主循环里主要查询状态,分析状态和对不同状态进行不同的动作和反应,这就是一个智能系统实现的基本过程。
凌阳单片机 7.3 编程与我的第一个程序

Sunplus SPCE061A 微控制器如何编程与我的第一个程序为什么要编程程序,是人们为了告诉微处理器要做什么事而编写的,微处理器能够理解的一串指令,有时也叫代码、程序。
语言的意义电脑软件都是用各种电脑语言(也叫程序设计语言)编写的。
最底层的叫机器语言,它由一些0和1组成,可以被某种电脑直接理解,但人就很难理解。
上面一层叫汇编语言,它只能由某种电脑的汇编器软件翻译成机器语言程序,才能执行。
人能够勉强理解汇编语言。
人常用的语言是更上一层的高级语言,比如C, Java, Fortran, BASIC。
这些语言编写的程序一般都能在多种电脑上运行,但必须先由一个叫作编译器或者是解释器的软件将高级语言程序翻译成特定的机器语言程序。
SPCE061A的编译器与语言 SPCE061A的编译器内核是GCC编译器,现在已升级到“unSP IDE1.16.1”。
unSP IDE 1.16.1能很好的支持C语言和汇编语言,并提供了良好的用户界面。
C语言和汇编语言在开发单片机时各有哪些优缺点?汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。
其主要优点是占用资源少、程序执行效率高。
但是不同的CPU,其汇编语言可能有所差异,所以不易移植。
C语言是一种结构化的高级语言。
其优点是可读性好,移植容易,是普遍使用的一种计算机语言。
缺点是占用资源较多,执行效率没有汇编高。
如何编程熟悉SPCE061A各模块的基本功能。
熟悉常用的一些汇编指令和伪指令。
善于总结。
为更好的理解编程过程,下面将结合遥控的编解码思路和设计流程进行讲解。
遥控的编解码思路和设计流程<1> 一、问题分析:一般来说完整的遥控码分为头码、地址码、数据码和校验码四个组成部分。
头码根据不同的厂家各不相同,地址码和数据码都由逻辑“1”和逻辑“0”组成。
编码的设计目的,就是按照编码规则发送不同的码值。
遥控的编解码思路和设计流程<2>二、分解问题任何智能系统都是由很多分支系统组成,首先我们要善于分析和理清各分支系统之间的关系。
电子电工学习精典网址

/club/bbs/list.asp?boardID=11
C语言教程: /class/index.asp?classid=8
水电知识网: /
爱迪生电子研发网: /
科海电子 : /
楚浩单片机工作室: /
威帆电子: /
小龙微控: /
吉林家电维修网: /
实用电子制作: /
电子制作: /
数码之家:/
电子制作实验室: /
学习单片机: /
PIC单片机学习网: /
龙图开发网: /
伟纳电子: /
铁匠工作室: /
电子忧网: /
世纪开发网: /
利舒技术实验室: /
单片机启点网: /
晓奇工作室: /
信洪电子: /
单片机培训: http://51_/
嘉陵单片机网: /
飞虹电子网: /
ARM嵌入式技术应用网站: /
电子制作天地: /
可编程逻辑器件: /
中国单片机公共实验室: /
盛明零件网: /
中国电子资源网: /
比高科技: /
向上电子: /
强力单片机:
美信电子: /
007编程之家: /
超越电子: /
磁动力工作室: /
超前科技: /
单片机C语言: /
电子技术特攻队: /
51单片机世界: /
中国电子电工: /
青青子木电子世界: /
电工之家: /
方园电子: /
光辉制作网: /
今日电子: /
电大在线: /
电子之城: /
01单片机网站: /
单片机常用c代码

单片机常用c代码在单片机领域,C语言是最常用的编程语言之一。
它具有简单易学、灵活高效的特点,被广泛应用于单片机系统的开发中。
本文将介绍一些常用的单片机C代码,为读者提供参考和学习的资源。
一、IO口控制单片机的IO口是与外部设备连接的重要接口,通过控制IO口的高低电平来实现与外部设备的通信。
以下是常见的IO口控制代码示例:1. 设置IO口为输出模式:```c#define LED_PIN 0 // 指定IO口引脚号void setup() {pinMode(LED_PIN, OUTPUT); // 设置IO口为输出模式}void loop() {digitalWrite(LED_PIN, HIGH); // 设置IO口为高电平delay(1000); // 延迟1秒digitalWrite(LED_PIN, LOW); // 设置IO口为低电平delay(1000); // 延迟1秒```2. 设置IO口为输入模式:```c#define BUTTON_PIN 1 // 指定IO口引脚号void setup() {pinMode(BUTTON_PIN, INPUT); // 设置IO口为输入模式}void loop() {if (digitalRead(BUTTON_PIN) == HIGH) { // 判断IO口电平是否为高电平// 执行相应操作}}```二、定时器控制定时器是单片机中的重要组件,可用于实现精确的时间控制和周期性任务。
以下是常见的定时器控制代码示例:1. 设置定时器计数器和预分频值:void setup() {TCCR1B = (1 << CS12) | (1 << CS10); // 设置定时器1的预分频为1024}void loop() {// 执行相应操作}```2. 设置定时器中断服务程序:```cISR(TIMER1_COMPA_vect) {// 定时器1比较匹配中断服务程序}void setup() {TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // 设置定时器1的CTC模式和预分频为1024OCR1A = 15624; // 设置定时器1的比较匹配值,实现1秒中断一次TIMSK1 = (1 << OCIE1A); // 允许定时器1比较匹配中断}void loop() {// 执行相应操作}```三、串口通信串口通信是单片机与计算机或其他外部设备进行数据交互的常用方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
凌阳单片机C语言注意点一:求实参顺序unsigned int i;i=0;test(i,i++);函数test的定义如下:void test(unsigned int f,unsigned int m){return;}这里我们不去追究这个函数有无意义,这里并不作讨论。
实际上,跟前面的讲解标准C的求参顺序的例子差不多,只不过把printf函数换成了一个具体的可见的函数而已。
在unSP C编写以上的代码,并在IDE中进行仿真时,所得到的结果是与标准C中的是一样的,与前面的分析一样,传递参数给test函数时,test函数的两个参数将得到如下的值:f为2,m为1。
感兴趣的读者可以试试。
不言而喻,说明了unSP C是与标准C没什么差别太多的,尽管去按照C语言的标准去写程序好了。
注意点二:数据类型这里所说的数据类型,指的是我们在编程时定义变量、常量时指定的数据类型,如“char”、“unsigned int”、“int”等。
而在最前面,已经简单提到了,对于C语言,具体的数据类型的定义是可以与具体的机器相关的,也就是说这些数据类型的具体定义(如占多少个字节长度、定义的规则等)是可以容许与最终代码所要运行的CP U(或叫机器)相关的。
所以在此提出,是有必要的,因为我们本书的重要目的就是单片机的C语言编程,而且是凌阳的unSP系列单片机的C编程,即有关于使用unSP C的;我们所编写的C代码最终运行的平台是凌阳unSP系列单片机。
unSP C所定义的数据类型,下表中有述,如下:数据类型数据长度(位)值域char 16 -32768~32767 short、int 16 -32768~32767long 32 -2147483648~2147483647unsigned char 16 0~65535unsigned short、unsigned int 16 0~65535unsigned long 32 0~4294967295float、double 32 以IEEE格式表示的32位浮点数在上表中,需要注意的是几个数据类型:char:在unSP C里面,由于没有byte的操作,将此数据类型定义为16位的长度,与一般的8位单片机的C编译器是有区别的,读者需要注意一下。
unsigned char:与前者一样,定义为了16位的长度。
double:这是需要注意的地方,目前unSP C里定义为32位的长度,是与一般的C编译器支持的64位长度有区别的。
注意点三:使用多种数据类型这里所说的就与单片机的C编程有关了,桌面程序的程序员,一般都不注意编译后生成的最终代码的大小,但对于单片机(或者是底层嵌入式的编程载体)而言,对最终程序的大小(即对程序存储器、数据存储器的占用大小)是斤斤计较的。
如果程序员在编程时同时使用不着unsigned与signed型的数据,则C编译器会调用不同的支持库来完成这两者不同类型的数据的操作,也就是说会增加一些程序的大小以及对RAM的占用,所以建议读者在编程时,合理地定义自己所需的数据类型。
而对于在处理速度上有要求的读者,建立采用unsigned 的数据定义,这样在运算时,只需要进行无符整型数的运算,而不需要对负数进行判断及处理,在速度上会快些。
注意点四:谨慎使用浮点数绝大多数的单片机是没有浮点运算单元的,即CPU不支持浮点运算,而非要进行浮点运算时只能通过软件的方式完成。
unSP C是凌阳16位单片机的C编程平台,与其它的单片机一样,也没有浮点的运算单元在C PU当中,所以在unSP C当中使用的浮点运算时,也是调用库(这个“库”将在后面的内容中介绍,大家可以留意一下后面的内容)里面的浮点运算库完成,然而浮点库在执行时,需要消耗大量的时间以及资源(相对于整型数的运算)。
基于前面的介绍,可以给读者一些建议,即在单片机的编程当中,尽量避免使用浮点数,可以将浮点数当作整型数处理(在精度要求允许的情况下)。
比如某数据处理的程序当中,数值将在1~0.01之间,而且精度要求为小数点后两位,那为何不将数据按比例扩大,处理时以100~1之间处理呢?所以,当您在单片机的C语言编程当中使用了浮点数,以及使用其进行了运算,结果发现程序的执行相当的慢,也就不足为奇了。
unSP IDE当中的主程序入口在SPCE061A或者是其它的凌阳16位单片机的汇编编程当中,unSP IDE的汇编编译器把那个从复位向量跳转到指定的主程序入口的操作过程给封锁了起来,也就是说,在复位向量里面写一个跳转的指令这样的工作,无需用户去做了,只需要按照统一的主程序入口开始你的编程之旅即可。
在unSP 的汇编里面,汇编器为我们指定了统一的主程序入口:_main其实,这仅仅是个名字而已,让大家都去统一使用的名字而已;大家在使用unSP 汇编时知道自己在“_main”标号后编写的程序即为我们的主程序,就够了,单片机在复位(包括上电)后,会自动跳到为个“_main”的位置开始执行程序嘀。
这里多说一下有关于程序(工程)的一些概念,在利用unSP IDE进行单片机程序的开发时,首先要确认那么一个概念:一个单片机的程序即为一个工程。
将概念切入到IDE的程序开发当中,即一个工程必需有且只能有一个主程序入口,无论你是使用C语言的main函数,还是汇编语言里的_main入口。
而我们要实现各种功能的子程序与主程序入口一样,可以由C 语言编写,也可以由汇编语言编写,当然不能C与汇编混在一块写了(嵌入式汇编则另当他论),但不可以同名;这些不同的子程序(或称函数),可以安排在不同的文件当中,只要它们都属于一个工程当中的话,IDE在编译时会将它们链接到一起,最终生成的机器码当中与它们是没有从属关系的,都是平等的。
最终来说,无非就是一个工程只有一个主程序入口(或叫主函数、主程序都可),子程序可以由程序员自行定义,支持多文件的工程结构。
在unSP IDE进行凌阳16位单片机的C语言编程,我们都要从主程序开始入手,为了与C++的规范接合,在unSP IDE里面要求最好主程序是这么定义的:int main(void)读者大可不必追究主程序的int型返回值的意义何在,那不是进行单片机C语言编程所关注的,因为一般单片要的编程来说,主程序不应该有结束返回的时候。
在IDE当中新建好一个工程之后,新建的工程当中是没有源代码的文件的(系统自动生成的文件我们暂不作讨论,而一般也不使用那些文件进行我们的源代码编写;此外,这里所讲的是以unSP IDE2.0.0为基准,后续的IDE也许会有工程向导,会为用户自动建立源代码文件以及主程序等,但以后再说),我们需要新建一个C语言的文件(仅针对C语言编程而言),然后建议首先要完成如下代码的编写:int main(void){while(1){;}}其实很简单的,一个最简单的C语言程序就那么构建完成了,没有什么实际的代码,仅在主程序里面有一个死的循环,没有退出返回;单片机在复位或者是上电后,会跳转到该函数进行开始执行我们的代码,然后在while(1)的死循环当中不断的循环,我们可以将完成某些任务的代码安排在这个死循环当中,通过一定的逻辑关系进行程序结构的控制,以完成我们赋予程序的功能。
为什么要有死循环也许有的初学者会问:为什么一定要有这么一个死循环呢?答:我们一般将它叫做主循环,对于单片机的程序而言,一般都会有一个主循环(基于操作系统的编程实际上也会有一个无法退出返回的死循环的,只是在操作系统的支持代码里面封闭了,用户不必追究),是一会让单片机的主程序执行结束的,因为我们需要单片机一直在工作,在主循环里或者是子程序的循环里面完成我们需要它做的各种工作,试想一下,如果没有一个无法退出的死循环(主循环),让单片机将程序从头到尾执行完后,单片机还能做什么呢?那就是死机喽~~;如果您的手机是你以这们的没有主循环的程序思路进行设计的话,那么一开手机电源后,手机中的处理器将程序从头执行到尾,然后就完蛋了,这样的手机有用吗?另外,这个简单的程序还有一个用意,也就是告诉初学者,养成良好的编程习惯,在一开始编程时将自己的程序的主要结构就构建好,然后往下的编程工作会清晰很多的。
4.2 在C当中直接操作硬件寄存器其实就单片机而言,无论是采用哪种核心的,哪种架构的,除了CPU内部在进行数据运算时仅使用CPU 内部寄存器以及总线(CPU内部数据、指令总线)外,它要对其内部的硬件功能模块进行操作,几乎都是通过对单片机的控制寄存器(或说是硬件寄存器)进行读或者写的操作来完成的;比如要利用单片机的端口输出某个状态,就需要对该端口的输出寄存器进行定的操作,以完成将单片机内部的数字逻辑转换到端口的电平物理的变换。
而从另一角度看,单片机最基本的功能就是以一定的输入,转换为一定的输出,而这种转换是程序员进行编程所规定的(怎么写就该有怎么样的输入到输出的变换)。
这个输入到输出的功能的实现,都需要对单片机的内部硬件寄存器进行操作,或读或写。
比如,下面的伪代码实现了将端口A输入,然后经算术运算后,由端口B输出前面获得输入的取反状态: r1 = [获取端口A状态的寄存器]r1 = r1取反值[端口B输出寄存器] = r1其实,就很简单了,前面的伪代码当中,首尾都是对硬件寄存器的操作,一个读取一个写入(或输出)。
对于单片机的硬件寄存器,我们可以进行如下的本质定义:单片机内部集成有很多不同功能的硬件功能模块(如端口、定时器等),而这些模块可以由单片机进行程序控制,以实现不同的功能,而这些硬件功能模块的不同功能可以由一些逻辑进行组合控制,有可能是一个位,也有可能是几位的组合控制;而将这些控制逻辑组合并分配在一个或多个数据单元里面,并由根据CPU的设计情况给这些数据单元安排在CPU可以访问到的某个具本的地址上,也就是所谓的硬件寄存器。
可以得出那么一点,也就是硬件寄存器的读或者写操作,也就是对某个地址进行读或者写操作。
所以总结下来,学习单片机或者是使用单片机,除了要掌握常规的程序编写基础逻辑思想,接下来的最基本的东西就是要掌握对你所使用的单片机的硬件寄存器的读写方法了。
通过前面的介绍,我们基本上定义了,所谓的单片机硬件寄存器(即硬件模块的控制寄存器)都是具体安排在某个地址单元上的,所以结合到C语言当中的编程设置,首先我们能想到的是什么?当然是指针去对某个地址单元进行操作了。
在学校里学习C语言编程时,使用的是基于PC上的C语言,也就是编译生成的可执行文件是运行在PC上的操作系统的;而且由于操作系统本身对存储器的地址单元的保护,所以在那时候,被告知编写C语言程序时要慎用指针操作,也就是千万不要在所编的程序里面通过指针直接对具体的某个地址单元进行操作,要不会引起系统的警告以及错误。