文档库 最新最全的文档下载
当前位置:文档库 › 单片机C语言中断操作方法

单片机C语言中断操作方法

单片机C语言中断操作方法
单片机C语言中断操作方法

单片机的C语言中位操作用法

作者:郭天祥来源:转自更新时间:2008-12-4 21:50:22 浏览次数:3123

在对单处机进行编程的过程中,对位的操作是经常遇到的。C51对位的操控能力是非常强大的。从这一点上,就可以看出C不光具有高级语言的灵活性,又有低级语言贴近硬件的特点。这也是在各个领域中都可以看到C的重要原因。在这一节中将详细讲解C51中的位操作及其应用。

1、位运算符

C51提供了几种位操作符,如下表所示:

1)“按位与”运算符(&)

参加运算的两个数据,按二进位进行“与”运算。原则是全1为1,

有0为0,即:

0&0=0; 0&1=0; 1&0=0; 1&1=1;

如下例:

a=5&3; //a=(0b 0101) & (0b 0011) =0b 0001 =1

那么如果参加运算的两个数为负数,又该如何算呢?会以其补码形

式表示的二进制数来进行与运算。

a=-5&-3; //a=(0b 1011) & (0b1101) =0b 1001 =-7

在实际的应用中与操作经常被用于实现特定的功能:

1.清零

“按位与”通常被用来使变量中的某一位清零。如下例:

a=0xfe; //a=0b 11111110

a=a&0x55;

//使变量a的第1位、第3位、第5位、第7位清零a= 0b

01010100

2.检测位

要知道一个变量中某一位是‘1’还是‘0’,可以使用与操作来实现。

a=0xf5; //a=0b 11110101

result=a&0x08; //检测a的第三位,result=0

3.保留变量的某一位

要屏蔽某一个变量的其它位,而保留某些位,也可以使用与操作来实现。

a=0x55; //a=0b 01010101

a=a&0x0f; //将高四位清零,而保留低四位a=0x05

2)“按位或”运算符(|)

参与或操作的两个位,只要有一个为‘1’,则结果为‘1’。

即有‘1’为‘1’,全‘0’为‘0’。

0|0=0; 0|1=1; 1|0=1; 1|1=1;

例如:

a=0x30|0x0f;

//a=(0b00110000)|(0b00001111)=(0b00111111)=0x3f

“按位或”运算最普遍的应用就是对一个变量的某些位置‘1’。如下例:

a=0x00; //a=0b 00000000

a=a|0x7f; //将a的低7位置为1,a=0x7f

3)“异或”运算符(^)

异或运算符^又被称为XOR运算符。当参与运算的两个位相同(‘1’与‘1’或‘0’与‘0’)时结果为‘0’。不同时为‘1’。

即相同为0,不同为1。

0^0=0; 0^1=1; 1^0=1;1^1=0;

例如:

a=0x55^0x3f;

//a=(0b01010101)^(0b00111111)=(0b01101010)=0x6a

异或运算主要有以下几种应用:

1.翻转某一位

当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例:

a=0x35; //a=0b00110101

a=a^0x0f; //a=0b00111010 a的低四位翻转

关于异或的这一作用,有一个典型的应用,即取浮点的相反数,具体的实现如下:

f=1.23; //f为浮点型变量值为1.23

f=f*-1; //f乘以-1,实现取其相反数,要进行一次乘运算

f=1.23;

((unsigned char *)&f)[0]^=0x80; //将浮点数f的符号位进

行翻转实现取相反数

2.保留原值

当一个位与‘0’作异或运算时,结果就为此位的值。如下例:

a=0xff; //a=0b11111111

a=a^0x0f; //a=0b11110000 与0x0f作异或,高四位不变,

低四位翻转

3.交换两个变量的值,而不用临时变量

要交换两个变量的值,传统的方法都需要一个临时变量。实现如下:

void swap(unsigned char *pa,unsigned char *pb)

{

unsigned char temp=*pa;//定义临时变量,将pa指向的变

量值赋给它

*pa=*pb;

*pb=temp;//变量值对调

}

而使用异或的方法来实现,就可以不用临时变量,如下:

void swap_xor(unsigned char *pa,unsigned char *pb)

{

*pa=*pa^*pb;//检查不同位,并置位1相同为置位0

//置位1的位表示不同需要交换,置位0的位相同保留

*pb=*pa^*pb; //反转不同位

*pa=*pa^*pb; //采用异或实现变量对调

}

从上例中可以看到异或运算在开发中是非常实用和神奇的。

4)“取反”运算符(~)

与其它运算符不同,“取反”运算符为单目运算符,即它的操作数只有一个。它的功能就是对操作数按位取反。也

就是是‘1’得‘0’,是‘0’得‘1’。

~1=0; ~0=1;

如下例:

a=0xff; //a=0b11111111

a=~a; //a=0b00000000

1.对小于0的有符号整型变量取相反数

d=-1;

//d为有符号整型变量,赋值为-1,内存表示为0b 11111111 11111111

d=~d+1; //取d的相反数,d=1,内存表示0b 00000000

00000001

此例运用了负整型数在内存以补码方式来存储的这一原理来实现的。负数的补码方式是这样的:负数的绝对值的内存表示取反加

1,就为此负数的内存表示。如-23如果为八位有符号整型

数,则其绝对值23的内存表示为0b00010111,对其取反则

为0b11101000,再加1为0b11101001,即为0XE9,与Keil

仿真结果是相吻合的:

2.增强可移植性

关于“增强可移植性”用以下实例来讲解:

假如在一种单片机中unsigned char类型是八个位(1

个字节),那么一个此类型的变量a=0x67,对其最低位清

零。则可以用以下方法:

a=0x67; //a=0b 0110 0111

a=a&0xfe; //a=0b 0110 0110

上面的程序似乎没有什么问题,使用0xfe这一因子就可以实现一个unsigned char型的变量最低位清零。但如果在另一种单片机中的

unsigned char类型被定义为16个位(两个字节),那么

这种方法就会出错,如下:

b=0x6767; //假设b为另一种单片机中的unsigned char 类

型变量,值为0b 0110 0111 0110 0111

b=b&0xfe; //如果此时因子仍为0xfe的话,则结果就为0b

0000 0000 0110 0110 即0x0066,而与0x6766

不相吻合

上例中的问题就是因为不同环境中的数据类型差异所造成的,即程序的可移

植性不好。对于这种情况可以采用如下方法来解决:

a=0x67; //a=0b 0110 0111

a=a&~1; //在不同的环境中~1将自动匹配运算因子,实现

最后一位清零a=0x66 其中~1为0b

11111110

b=0x6767; //a=0b 0110 0111 0110 0111

b=a&~1; //~1=0b 1111 1111 1111 1110,b=0b 0110 0111

0110 0110 ,即0x6766

5)左移运算符(<<)

左移运算符用来将一个数的各位全部向左移若干位。如:

a=a<<2

表示将a的各位左移2位,右边补0。如果a=34(0x22或0b00100010),左移2位得0b10001000,即十进制的136。高位在左移后溢出,

不起作用。

从上例可以看到,a被左移2位后,由34变为了136,是原来的4倍。而如果左移1位,就为0b01000100,即十

进制的68,是原来的2倍,很显然,左移N位,就等于乘

以了2N。但一结论只适用于左移时被溢出的高位中不包含

‘1’的情况。比如:

a=64; //a=0b 0100 0000

a=a<<2; //a=0b 0000 0000

其实可以这样来想,a为unsigned char型变量,值为64,左移2位后等于乘

以了4,即64X4=256,而此种类型的变量在表达256时,

就成为了0x00,产生了一个进位,即溢出了一个‘1’。

在作乘以2N这种操作时,如果使用左移,将比用乘

法快得多。因此在程序中适应的使用左移,可以提高程序

的运行效率。

6)右移运算符

右移与左移相类似,只是位移的方向不同。如:

a=a>>1

表示将a的各位向右移动1位。与左移相对应的,左移一位就相当于除以2,右移N位,就相当于除以2N。

在右移的过程中,要注意的一个地方就是符号位问题。

对于无符号数右移时左边高位移和‘0’。对于有符号数

来说,如果原来符号位为‘0’,则左边高位为移入‘0’,

而如果符号位为‘1’,则左边移入‘0’还是‘1’就要

看实际的编译器了,移入‘0’的称为“逻辑右移”,移

入‘1’的称为“算术右移”。Keil中采用“算术右移”

的方式来进行编译。如下:

d=-32; //d为有符号整型变量,值为-32,内存表示为0b

11100000

d=d>>1;//右移一位d为0b 11110000 即-16,Keil采用"

算术逻辑"进行编译

7)位运算赋值运算符

在对一个变量进行了位操作中,要将其结果再赋给该

变量,就可以使用位运算赋值运算符。位运算赋值运算符

如下:

&=, |=,^=,~=,<<=, >>=

例如:a&=b相当于a=a&b,a>>=2相当于a=a>>2。

8)不同长度的数据进行位运算

如果参与运算的两个数据的长度不同时,如a为char

型,b为int型,则编译器会将二者按右端补齐。如果a为

正数,则会在左边补满‘0’。若a为负数,左边补满‘1’。

如果a为无符号整型,则左边会添满‘0’。

a=0x00; //a=0b 00000000

d=0xffff; //d=0b 11111111 11111111

d&=a; //a为无符号型,左边添0,补齐为0b 00000000

00000000,d=0b 00000000 00000000

C51单片机C语言程序100例_Keil

目录 目录 (1) 函数的使用和熟悉********************************/ (4) 实例3:用单片机控制第一个灯亮 (4) 实例4:用单片机控制一个灯闪烁:认识单片机的工作频率 (4) 实例5:将P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能 (5) 实例6:使用P3口流水点亮8位LED (5) 实例7:通过对P3口地址的操作流水点亮8位LED (6) 实例8:用不同数据类型控制灯闪烁时间 (7) 实例9:用P0口、P1口分别显示加法和减法运算结果 (8) 实例10:用P0、P1口显示乘法运算结果 (9) 实例11:用P1、P0口显示除法运算结果 (9) 实例12:用自增运算控制P0口8位LED流水花样 (10) 实例13:用P0口显示逻辑"与"运算结果 (10) 实例14:用P0口显示条件运算结果 (11) 实例15:用P0口显示按位"异或"运算结果 (11) 实例16:用P0显示左移运算结果 (11) 实例17:"万能逻辑电路"实验 (11) 实例18:用右移运算流水点亮P1口8位LED (12) 实例19:用if语句控制P0口8位LED的流水方向 (13) 实例20:用swtich语句的控制P0口8位LED的点亮状态 (13) 实例21:用for语句控制蜂鸣器鸣笛次数 (14) 实例22:用while语句控制LED (16) 实例23:用do-while语句控制P0口8位LED流水点亮 (16) 实例24:用字符型数组控制P0口8位LED流水点亮 (17) 实例25:用P0口显示字符串常量 (18) 实例26:用P0口显示指针运算结果 (19) 实例27:用指针数组控制P0口8位LED流水点亮 (19) 实例28:用数组的指针控制P0口8位LED流水点亮 (20) 实例29:用P0、P1口显示整型函数返回值 (21) 实例30:用有参函数控制P0口8位LED流水速度 (22) 实例31:用数组作函数参数控制流水花样 (23) 实例32:用指针作函数参数控制P0口8位LED流水点亮 (23) 实例33:用函数型指针控制P1口灯花样 (25) 实例34:用指针数组作为函数的参数显示多个字符串 (26) 实例35:字符函数ctype.h应用举例 (27) 实例36:内部函数intrins.h应用举例 (27) 实例37:标准函数stdlib.h应用举例 (28) 实例38:字符串函数string.h应用举例 (29) 实例39:宏定义应用举例2 (29) 1/192

单片机C语言(非常通俗易懂)

单片机C语言(非常通俗易懂) (一) 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具 体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵 ^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使

单片机C语言编程实例

单片机C语言编程实例 前言 INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着 单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的 多种芯片,从而扩充和扩展了其品种和应用领域。 C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。将C语言向单片机上的移植,始于20世纪80年代的中后期。经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的。. C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广.最多的计算语言之一。C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言.与汇编语言相比,C51在功能上.结构上以及可读性.可移植性.可维护性等方面都有非常明显的优势。目前 最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51。第 一章单片机C语言入门 1.1建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码, 这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软 件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑, 编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面 和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真 方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周 立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个

单片机C语言变量定义定稿版

单片机C语言变量定义 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】

单片机教程,51单片机C语言学习 第六课变量 上课所提到变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: [存储种类] 数据类型[存储器类型] 变量名表 在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。这些存储种类的具体含义和用法,将在第七课《变量的存储》中进一步进行学习。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。表6-1中是KEIL uVision2所能认别的存储器类型。注意的是在AT89C51芯片中RAM只有低128位,位于80H到FFH的高128位则在52芯片中才有用,并和特殊寄存器地址重叠。特殊寄存器(SFR)的地址表请看附录二AT89C51特殊功能寄存器列表

表6-1 存储器类型 如果省略存储器类型,系统则会按编译模式SMALL,COMPACT或LARGE所规定的默认存储器类型去指定变量的存储区域。无论什么存储模式都可以声明变量在任何的8051存储区范围,然而把最常用的命令如循环计数器和队列索引放在内部数据区可以显着的提高系统性能。还有要指出的就是变量的存储种类与存储器类型是完全无关的。

单片机应用技术(c语言版 第3版)[王静霞]_习题答案

习题 1 1.1 单项选择题 (1) A (2)C (3)C 1.2 填空题 (1)硬件系统、软件系统 (2)时钟电路、复位电路 (3)XTAL1、XTAL2、RESET、EA (4)晶振 1.3 问答题 什么是单片机它由哪几部分组成什么是单片机应用系统 答:单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。 单片机应用系统是以单片机为核心,配以输入、输出、显示等外围接口电路和控制程序,能实现一种或多种功能的实用系统。 1.4 上机操作题 (1) 参考程序: #include //包含头文件reg51.h,定义了51单片机的专用寄存器 //函数名:delay //函数功能:实现软件延时 //形式参数:无符号整型变量i,控制空循环的循环次数 //返回值:无 void delay(unsigned int i) //延时函数 { unsigned int k; for(k=0;k //包含头文件reg51.h,定义了51单片机的专用寄存器 //函数名:delay

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在Keil安装文件夹中,找到相应的文件,比较一下便知! sbit P1_0 = P1 ^ 0; //定义管脚 void main (void) { while(1) { P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效 } } 就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。 P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。 while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。 点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其 实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在 P1_1--P1_7上再接7个LED即可。例程如下: #include sbit P1_0 = P1 ^ 0; sbit P1_1 = P1 ^ 1; sbit P1_2 = P1 ^ 2; sbit P1_3 = P1 ^ 3; sbit P1_4 = P1 ^ 4; sbit P1_5 = P1 ^ 5; sbit P1_6 = P1 ^ 6; sbit P1_7 = P1 ^ 7; void Delay(unsigned char a) { unsigned char i; while( --a != 0) {

51单片机C语言入门教程详细解说

单片机c语言入门 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具 体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使

项目单片机应用技能实训C语言教案

单片机应用技能实训(C语言)教案—项目2 项目2 广告灯电路制作 任务1 MCS-51单片机I/O端口及C语言相关指令

二、教学实施过程 实 施 环 节 教学内容导 学 方 法组 织 教 学 1、检查学生出勤情况并做好记录。 2、调整学生的注意力,为上课作准备。 互 动 交 流复 习 提 问 1、MCS-51单片机由哪几部分组成 2、MCS-51单片机有多少个I/O口引脚 提 问 导 思导 入 夜晚的商业街上,各种各样的广告彩灯光彩夺目,变幻无穷,非常好看。那么功能强大的单片机是否能完成广告彩灯的控制任务呢本项目的任务就是制作一个用单片机控制的广告灯电路。为完成项目制作,先进行相关基本知识的学习。 启 发 学 习 积 极 性讲 授 新 课 一、MCS-51单片机并行接口 1、P0口的结构和工作原理 P0口每一位的结构如图2-2所示,它由一个输出锁存器,上下两个三态缓冲器,一个输出驱动电路和一个输出控制电路组成。 图2-2 P0口的结构 从P0口输出数据的方法有两种,一种是执行以P0口为目的操作数的数据传送指令来实现,另一种是执行以P0口位为目的操作数的位操作指令来实现。分别举例如下: P0=0x66; 12 fsoc 1 ?12 10 6 1 6 ? ? sμ

1、

89C1’ex),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。 4、编译、连接 在设置好工程后,即可进行编译、连接。点击Build target 按钮,对当前工程进行连接,如果当前文件已修改,软件会先对该文件进行编译,然后再连接以产生目标代码。 编译过程中的信息将出现在输出窗口中的Build页中,如果源程序中有语法错误,会有错误报告出现。 三、布置作业学生练习,老师指导。 1、单片机控制广告灯电路的仿真验证。 2、观察现实中广告灯的变化情况,通过改写程序,完成不同的灯光效果。比一比,看谁制作的变化效果又多又好。 3、本项目中采用低电平驱动,是否能采用高电平驱动,试一试,想想为什么利用多媒体或机房相关软件进行操作演示。讲解各步骤的含义。 讲解各步骤的含义。完成程序编译后,展示仿真效果。 课堂小结1、proteus的基本操作步骤。 2、keil的操作步骤。

合泰单片机C语言教程

Holtek 微控制器應用範例–使用Holtek C 語言目錄 第一章內容簡介 第二章選定Holtek C 語言的使用環境 2.1 進入HT-IDE3000 建立新的專案時, 選定Holtek C 編譯器 2.2 已開啟專案後, 選用Holtek C 編譯器 第三章微控制器C 語言程式的速成 3.1 定義主函式main() 3.2定義副函式(sub-function) 3.3定義全域變數(global variable) 3.4定義中斷服務函式(Interrupt Service Routine : ISR) 3.5 其他 第四章 C 語言程式 4.1 C 程式架構 4.2 開始用C 語言設計一個程式 4.2.1 定義主函式main 4.2.2 將標頭檔引入(include a header file) 4.2.3 定義文字符號及變數 4.2.4 設定微控制器及裝置的初始狀態 4.2.5 設計子函式 4.2.6 設計中斷服務函式 4.3變數(variable) 及資料型態(data type) 4.3.1 變數名 4.3.2 資料型態 4.3.3 變數的有效範圍(scope) 4.3.4 變數的資料型態(data type)

整數型(integer) 浮點型(floating point) 4.3.5 bit 資料型態 4.3.6儲存類別(storage class) 與修飾詞(qualifier) 儲存類別(storage class) 修飾詞(qualifier) 4.3.7絕對變數(absolute variable) 4.3.8常數(constant) 4.3.9指標(pointer) 與陣列(array) 指標的運算子& 與* 陣列(array) 4.3.10結構(struct) 與等位(union) 結構的運算子-> 與. 4.4運算子(Operators) 運算前的型態轉換 4.5程式流程控制(program flow control) 4.5.1if-else 敘述 4.5.2switch 敘述 4.5.3for 敘述 4.5.4while 敘述 4.5.5do-while 敘述 4.5.6goto 敘述 4.5.7break 與continue 敘述 4.6函式(Functions) 4.6.1參數(arguments) 4.6.2返回值(return values) 4.7中斷服務函式(Interrupt Service Routines) 4.8在C 語言程式中嵌入組合語言(in-line assembly code) 從組合語言的程式去存取 C 語言的物件(變數) 4.9前置處理指令(Preprocessor) 4.9.1 定義文字符號(#define)

51单片机C语言程序设计复习资料

2013-2014学年上期51单片机C语言程序设计重修复习提纲考试方式:闭卷考试。 考试题型: 填空题(每空1分,共18分);单项选择题(每空2分,共18分);问答及计算题(每题4分,共16分);编程及程序阅读题(5小题,共48分)。 考试分数: 卷面成绩70%+平时成绩15%+实验成绩15%,未缺席、无课堂违纪、作业全交且认真完成的同学平时成绩可获得满分,缺席一次平时成绩扣30分,实验好评次数3次以上且实验报告全优的同学实验成绩可得满分,实验缺席一次扣30分。缺席实验和旷课共3次以上者,无考试资格。 考试时间: 18周周一(12月30日)下午14:00:16:00,考试地点:具体考室另行通知希望大家认真复习,认真听讲,不懂就问,考试成绩不及格允许查卷,如查卷卷面批阅无误成绩不做更改。 编程题为实验或实验类似的题目有3题,其余2题也取自课堂讲授例题,请务必认真复习。第一章单片机概述及单片机知识回顾 掌握什么是单片机、单片机的应用、常见单片机类型、十进制、十六进制、二进制数制转换知识。掌握单片机的硬件组成、CPU的结构、程序计数器PC的功能、存储器结构、机器周期的计算、会画出单片机的最小系统电路图及回答单片机最小系统的组成。 第二章C51语言程序设计基础(本章填空题和选择题比重较大请务必认真复习)掌握C51语言进行软件开发与汇编语言相比的优点、掌握C51的数据类型、特殊功能位的定义、C51的基本运算(位运算重点复习)、数组的定义、C51的结构及函数。 第三章AT89S51片内并行端口及编程(本章有编程题) 掌握P0-P3并行端口的特点,会开关量检测及流水灯程序的编程。 第四章AT89S51单片机的中断系统(本章有编程题) 掌握中断系统的结构、中断请求响应被满足的条件、外部中断的触发选择方式、外部中断的使用与编程。 第五章AT89S51单片机的定时器/计数器(本章有编程器) 掌握定时器的结构,TOMD及TCON的使用,定时器方式0和方式1的特点、会计算定时器初值,会用定时器中断产生PWM波形,会用定时器对外部事件进行计数。 第六章AT89S51单片机的串行口(本章有计算题) 掌握串行通信的基础知识(课本没有的内容请参照课堂讲授笔记或PPT)、串行口的四种工作方式的特点、会计算奇偶校验码、会根据波特率计算T1的初值。 第七章AT89S51单片机与输入/输出外设接口(本章有编程题) 掌握数码管动态显示的原理、掌握矩阵式键盘的原理与编程(矩阵键盘编程必考,但不会考4X4键盘)。 第八章AT89S51单片机与D/A与A/D转换器的接口(本章有编程题) 掌握AD与DA转换的接口、ADC和DAC的技术指标、常用AD和DA转换器。掌握ADC0809和TLC2543的使用与编程(2器件其中之一有编程题)。 第九章AT89S51单片机应用系统与调试(本章有编程题) 掌握单片机应用系统的软件抗干扰方法。

最新项目9单片机应用技能实训(C语言)教案教学内容

单片机应用技能实训(C语言)教案—项目9 项目9 点阵LED屏显示电路制作 任务1 项目相关知识学习

二、教学实施过程 实施环节教学内容导学方法组织教学1、检查学生出勤情况并做好记录。 2、调整学生的注意力,为上课作准备。 互动交流 复习提问1、项目8中数码管的显示方式是动态显示还是静态显示? 2、以同学们的理解,LED屏是什么? 本项目的终极目标是制作一个单片机控制的LED屏显示电路。 提问导思 导入在项目6和项目8中,用数码管来显示数字,也可以用来显示一些字符,但是,显示字符时有一定局限性,所以,当要显示一 些英文字符时,考虑用LED屏。在进行项目制作之前,学习LED 屏的相关知识。启发学习积极性 讲授新课一、LED点阵显示模块的结构、工作原理及显示方式 1、LED点阵显示模块结构及工作原理 LED点阵显示模块是一种能显示图形、字符和汉字的显示器件。一个LED点阵显示模块一般由8×8个LED发光二极管方阵组成,其外形如图9-2所示。8×8LED点阵显示模块原理结构如图9-3所示。我们可以把每一个LED发光点理解为一个像素,8×8点阵显示屏可以显示在64像素范围内的任何图形。 图9-3 图9-2 2、LED点阵显示模块的显示方式 LED点阵显示模块的显示方法必须采用动态扫描方式,一般采用逐行扫描。以图9-3所示为例,一幅图形的每行由一个8位二进制数据构成,将这些数据称为显示数据点阵码。比如显示字符“O”的点阵码为:3CH、42H、42H、42H、42H、42H、42H、3CH(如图9-4所示)。一般显示汉字采用的是16×16的点阵模式或者更多,但是原理是相同的。用多媒体展示图9-2、图9-3。对照图9-3介绍其工作原理。 细致说明点阵码的含义。

单片机应用技术(C语言)试题

一、选择题 1、单片机8031的/EA引脚(C)。 A. 可悬空 B. 必须接+5V电源 C. 必须接地 D. 以上三种情况视需要而定 2、MCS-51单片机的4个并行I/O端口作为通用I/O端口使用,在输出数据时,必须外接上拉电阻的是(A)。 A. P0口 B. P1口 C. P2口 D. P3口 3、当MCS-51单片机应用系统需要扩展外部存储器或其它接口芯片时,(A)可作为低8位地址总线使用。 A. P0口 B. P1口 C. P2口 D. P0口和P2口 4、系统复位后,堆栈指针SP的内容是(B)。 A. 08H B. 07H C. 30H D. 50H 5、MCS-51单片机的位寻址区位于内部RAM的( D )单元。 A. 00H~7FH B. 20H~7FH C. 00H~1FH D. 20H~2FH 6、PSW中的RS1和RS0用来(A)。 A. 选择工作寄存器组 B. 指示复位 C. 选择定时器 D. 选择工作方式 7、MCS-51单片机规定一个机器周期共有(A)个节拍。 A. 12 B. 6 C. 8 D. 16 8、下面叙述不正确的是(C)。 A. 一个C源程序可以由一个或多个函数组成 B. 一个C源程序必须包含一个函数main() C. 在C51中,注释说明只能使用/*……*/注释 D. C程序的基本组成单位是函数 9、在C51程序中常常把(D)作为循环体,用于消耗CPU时间,产生延时效果。 A. 赋值语句 B. 表达式语句 C. 循环语句 D. 空语句 10、在单片机应用系统中,LED数码管显示电路通常有(C )显示方式。 A. 静态 B. 动态 C. 静态和动态 D. 查询 11、共阳极LED数码管加反向器驱动时显示字符“6”的段码是(B)。 A. 06H B. 7DH C. 82H D. FAH 12、LED数码管若采用动态显示方式,下列说法错误的是(C)。 A. 将各位数码管的段选线并联 B. 将段选线用一个8位I/O端口控制 C. 将各位数码管的公共端直接连接在+5V或者GND上 D. 将各位数码管的位选线用各自独立的I/O端口控制 13、按键开关的结构通常是机械弹性元件,在按键按下和断开时,触点在闭合和断开瞬间会产生接触不稳定,为消除抖动引起的不良后果,常采用的方法有(C)。 A. 硬件去抖动 B. 软件去抖动 C. 硬、软件两种方法 D. 单稳态电路去抖方法

单片机C语言项目式教程课后题解大学期末复习资料

思考与讨论题 1-1什么是单片机?它与一般微型计算机在结构上何区别? 答: 单片微型计算机简称为单片机(Single Chip Computer),又称为微控制器(MCU即Micro-Controller Unit)。它是在一块芯片上集成了中央处理器(CPU)、存储器(RAM、ROM)、定时器/计数器、中断控制、各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等为一体的器件。 微型计算机的基本结构由CPU(运算器、控制器)、存储器、输入设备和输出设备五大部分组成,各部分通过外部总线连接而成为一体。 单片机的结构是在一块芯片上集成了中央处理器(CPU)、存储器、定时器/计数器、中断控制、各种输入/输出接口(如并行I/O口、串行I/O口和A/D转换器)等,它们通过单片机内部部总线连接而成为一体。 1-2 单片机的发展大致可分为几个阶段?各阶段的单片机功能特点是什么?

答: 1976年9月Intel公司推出MCS-48单片机,8位机 1978年下半年Motorola公司推出M6800系列单片机,增加了串口功能 1982年Mostek公司和Intel公司先后又推出了性能更高的16位机 思考与讨论题 2-1 串行在线仿真系统中单片机与PC机的通信线怎样连接? 答: 设计好单片机产品硬件,作一根通信线,一般是买一根标准串口通信线,一端(A端)9芯插头与PC机相连,另一端(B 端)的插头不用,直接将三根线分别与单片机的串口和地相连(A端的2脚与单片机的P3.0连;A端的3脚与单片机的P3.1连;A端的5脚与单片机的地连;A端的7脚与A端的8脚短接;A端的4脚与A端的6脚短接)。 2-2 在线仿真与软件仿真的主要区别在哪里?

单片机应用技术C语言版

1.1单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等 1.2软件是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,二者相互依赖,缺一不可 1.3单片机的发展经历了由4位机到8位机,再到16位机的发展过程 1.4中央处理器CPU:8位,运算和控制功能 内部RAM:共256个RAM单元,用户使用前128个单元, 用于存放可读写数据,后128个单元被专用寄存器占用。 内部ROM:4KB掩膜ROM,用于存放程序、原始数据和表格。 定时/计数器:两个16位的定时/计数器,实现定时或计数功能。 并行I/O口:4个8位的I/O口P0、P1、P2、P3。 串行口:一个全双工串行口。 中断控制系统:5个中断源(外中断2个,定时/计数中断2个,串行中断1个) 时钟电路:可产生时钟脉冲序列,允许晶振频率6MHZ和12MHZ 1.5按键手动复位,有电平方式和脉冲方式两种。 1.6寄存器SP的复位电路07H 寄存器P0-P3的复位电路FFH 寄存器PC的复位电路0000H 寄存器B的复位电路00H 1.7单片机的时序概念从小到大依次是:节拍、状态、机器周期和指令周期 1.8机器周期:一个机器周期分为6个状态:S1~S6。每个状态又分为两拍:P1和P2 1.9指令周期:是执行一条指令所需的机器周期数。 1.10P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。 1.11 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0*(外部中断0) P3.3 INT1*(外部中断1) P3.4 T0(定时器0外部计数输入) P3.5 T1(定时器1外部计数输入) P3.6 WR*(外部数据存储器写选通) P3.7 RD*(外部数据存储器读选通) 1.12P0口输出高电平必须接上拉电阻。P1~P3口输出高电平不必接上拉电阻。 1.13对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可用寄存器单元地址。 1.14直接寻址:直接通过地址访问(00H~7FH) 1.15 data 直接访问内部数据存储器(128字节),访问速度最快 1.16C5l的数据类型有位型(bit)、无符号字符(unsigned char)、有符号字符(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长型(unsigned long)、有符号长型(signed long)、浮点(float)和指针类型等。其中short与long属整型数据、float与double 型属浮点型数据。 1.17bit flag; // 将flag定义为位变量sfr P1 = 0x90; //定义P1口,地址90H #define uchar unsigned char宏定义 sbit P1_0=P1^0变量声明 void delay(uchar i);被调函数声明void main() 定义主函数

!单片机C语言简明教程

本文由xianguogao贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C语言程序设计 语言程序设计 1.0 1.1 1.2 1.3 为什么要学习C语言? § 计算机学的许多知识都具有相通性,因 而,不断追赶时髦技术而忽略基本功的 做法是徒劳无意的.我们最多需要"精 通 "三种语言,最佳拍档是汇编,C, C++(或JAVA),很显然,如果你"精 通"了这三种语言,其它语言你应该是 可以很快"熟悉"的,否则你就没有 "精通 "它们. § C语言是嵌入式开发的主要语言 1.0 1.1 1.2 1.3 初级入门教材 1. 《C程序设计语言》(The C Programming Language,第2版 新版) Brain W. Kernighan 和 Dennis.M.Ritchie 著 2. 《C Primer Plus(第五版)中文版》 Stephen Prata著,云巅工作室 译 3. 《C和指针》(Pointers on C) (美)Kenneth A. Reek著 徐波译 4. 《C语言程序设计》 谭浩强 著 清华大学出版社 1.0 1.1 1.2 1.3 C语言进阶书籍 《C陷阱与缺陷》(C Traps and Pitfalls)Andrew Koenig 著 《C专家编程》 (美) Peter Van Der Linden著 徐波译 《C语言编程常见问题解答》(C Programming : Just the Faqs ) Paul S.R. Chisholm 等著 《C/C++嵌入式系统编程》(Programming Embedded Systems in C and C++) 作者:Michael Barr 《高质量程序设计指南:C++/C语言 》林锐, 韩永 泉编著 把这几本书吃透,足 以使你成为C语言高手 了 西电本科硕士,浙大博士, 著名网文:大学十年 购书方法 §互动出版社(china-pub) §网址:www.china-pub.com §好处: 搜索同类型书,版本全面,经常会有意外收获 有购书网友的心得,评论,可未读先知 有一定价格优惠 信誉较好,可靠 上机调试方法 1. IAR C编译器 EW430 3.41A软件 2. Dev C++软件 Dev-C++ 是一个 C++ 开发工具.它包括多页面窗 口,工程编辑器,在工程编辑器中集合了编辑 器,编译器,连接程序和执行程序.它也提供 高亮度语法显示的,以减少编辑错误. 一些重要的学习论坛 1. 2. 3. 4. 5. http://www.mcu-china.com/ 南航魏小龙主页 http://www.microcontrol.cn/bbs/Boards.asp

单片机应用技术(C语言~)教学大纲

单片机应用技术(C语言)教学大纲 一、说明 1、课程的性质和内容 本课程是高级技校应用电子专业的专业课。主要内容包括:认识单片机,点亮彩灯,简易数字钟,简易计算器,键控彩灯,简易频率计,单片机双机通信,简易波形发生器,简易数字电压表,移动字幕的制作,校园打铃系统。 2、课程的任务和要求 本课程的主要任务是让学生熟悉AT89S51系列单片机的硬件结构,会使用常见的单片机外围器件,会用单片机组成具有特定功能电子电路,能用C语言编程驱动单片机AT89S51完成各种基本控制功能,能用单片机实现简单的系统电路,具备初步的单片机应用开发能力。 通过本课程的学习,学生应达到以下几个方面的要求: (1)熟悉单片机AT89S51的结构、引脚功能及工作原理。 (2)熟悉C语言程序的编写方法。 (3)能设计以单片机为核心、相关外围电路组成并能完成特定功能的电路。 (4)能根据单片机的工作原理和外围电路的功能要求进行软件设计,会分析程序设计思路和设计方法。 (5)具有初步的单片机控制应用系统硬件和软件设计能力。 3、教学中应注意的问题 (1)教学中注意以学生为中心,做到教师边讲解边演示,学生边学边练习实践,培养学生的应用开发能力。 (2)任课教师应根据本学校设备及学生的具体情况进行教学。 (3)在教学实施过程中,教师应多联系生产实际和相关课程,还可选用一些更合适的应用实例进行讲解,以激发学生的兴趣,培养学生解决实际问题的能力。 (4)教学中应根据学生情况掌握好讲练比例,充分利用多媒体设备、实验设备和实验电路等进行直观教学。 二、学时分配表

三、教学要求、内容及建议 课题一认识单片机 教学要求 1、熟悉AT89S51的PDIP40\TQFP44和PLCC44三种封装形式,熟练掌握AT89S51单片机的各引脚功能。 2、掌握用AT89S51构成的单片机最小系统及各部分电路的功能。 3、认识实验电路板上的主要元器件包括AT89S51单片机、晶体振荡器、锁存器74HC573、MAX232芯片、RS-232串口端、数码管显示电路、发光二极写显示电路、键盘电路、排阻等元件。 4、会正确插装电路元件,能优质焊接电路元件。 5、会正确使用压线钳,良好压接连接线和下载线的金属插头;熟悉下载线的作有和使用方法。 教学内容 1、认识单片机AT89S51及引脚功能。 2、安装单片机最小系统及实验电路,并认识单片机最小系统的外围扩展电路。 3、正确无误地安装实验电路板和下载线,并进行检查。 教学建议 着重介绍AT89S51引脚功能。 课题二点亮彩灯 教学要求 1、理解单片机端口控制外接彩灯电路的工作原理。

单片机C语言变量定义

单片机C语言变量定义 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

单片机教程,51单片机C语言学习 第六课变量 上课所提到变量就是一种在程序执行过程中其值能不断变化的量。要在程序中使用变量必须先用标识符作为变量名,并指出所用的数据类型和存储模式,这样编译系统才能为变量分配相应的存储空间。定义一个变量的格式如下: [存储种类] 数据类型[存储器类型] 变量名表在定义格式中除了数据类型和变量名表是必要的,其它都是可选项。存储种类有四种:自动(auto),外部(extern),静态(static)和寄存器(register),缺省类型为自动(auto)。这些存储种类的具体含义和用法,将在第七课《变量的存储》中进一步进行学习。 而这里的数据类型则是和我们在第四课中学习到的名种数据类型的定义是一样的。说明了一个变量的数据类型后,还可选择说明该变量的存储器类型。存储器类型的说明就是指定该变量在C51硬件系统中所使用的存储区域,并在编译时准确的定位。表6-1中是KEILuVision2所能认别的存储器类型。注意的是在AT89C51芯片中RAM只有低128位,位于80H到FFH的高128位则在52芯片中才有用,并和特殊寄存器地址重叠。特殊寄存器(SFR)的地址表请看附录二AT89C51特殊功能寄存器列表

表6-1 存储器类型 如果省略存储器类型,系统则会按编译模式SMALL,COMPACT或LARGE 所规定的默认存储器类型去指定变量的存储区域。无论什么存储模式都可以声明变量在任何的8051存储区范围,然而把最常用的命令如循环计数器和队列索引放在内部数据区可以显着的提高系统性能。还有要指出的就是变量的存储种类与存储器类型是完全无关的。 SMALL存储模式把所有函数变量和局部数据段放在8051系统的内部数据存储区这使访问数据非常快,但SMALL存储模式的地址空间受限。在写小型的应用程序时,变量和数据放在data内部数据存储器中是很好的因为访问速度快,但在较大的应用程序中data区最好只存放小的变量、数据或常用的变量(如循环计数、数据索引),而大的数据则放置在别的存储区域。 COMPACT存储模式中所有的函数和程序变量和局部数据段定位在8051系统的外部数据存储区。外部数据存储区可有最多256字节(一页),在本模式中外部数据存储区的短地址用@R0/R1。 LARGE存储模式所有函数和过程的变量和局部数据段都定位在8051系统的外部数据区外部数据区最多可有64KB,这要求用DPTR数据指针访问数据。

51单片机及C语言入门教程

51单片机 及C语言入门教程 注:排成16开版式,是为了方便自已打印阅读。请不要用于非法用途。 2007.12.20

51单片机及C语言入门教程 第一课 建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了) 安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立一个小程序项目吧。或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果。 首先当然是运行KEIL51软件。怎么打开?噢,天!那你要从头学电脑了。呵呵,开个玩笑,这个问题我想读者们也不会提的了:P。运行几秒后,出现如图1-1的屏幕。 图1-1启动时的屏幕

接着按下面的步骤建立您的第一个项目: (1)点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1-2。接着弹出一个标准Windows文件对话窗口,如图1-3,这个东东想必大家是见了N次的了,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。在"文件名"中输入您的第一个C程序项目名称,这里我们用"test",这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行。"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。 图1-2New Project菜单 图1-3文件窗口 (2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。此时屏幕如图1-4

相关文档
相关文档 最新文档