- 1、本文档共162页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51单片机汇编课程设计案例精编 - Read.DOC
51单片机汇编课程设计案例精编
MSC51
51单片机汇编课程设计案例精编 1
MSC51 1
第六课 C51基础 1
简结键盘去抖方法 5
【小雨的成长】外部中断的简单应用 10
第七课??按键处理 13
[单片机教程]第九课 中断应用—红外解码 15
[单片机教程]第十课 LCD1602显示 20
51单片机与串口通信(含代码) 24
[单片机教程]第十二课 ADC0832应用 28
【小雨的成长】简单东西复杂玩之流水灯 37
lcd??ko 57
《51单片机汇编课程设计案例精编》源代码 31 81
空调温度控制器 102
简易电子琴设计 106
设计实验 跑马灯 1 111
温度采集系统 112
A/D与D/A转换 117
单片机MCS-51系列指令快速记忆法 118
汇编语言在51单片机中的所有指令有那些 122
单片机复位电路设计 128
单片机复位电路的可靠性分析 135
I2C总线原理及应用实例 143
三极管的基本放大电路 146
AVR,C51和PIC八位单片机性能比较 148
电力电子器件的缓冲电路 152
利用PC的RS232口控制LED灯 155
十六进制显示 159
二进制转换成十六进制的方法 159
第六课 C51基础
更新时间:2009年01月08日 浏览次数: 183 作者: 来源:
上一课我们讲了一些C51的知识,并且把第一、二课的汇编程序用C写了出来,今天我们继续学习一些C51的基础知识。上节我们学过for,while,除此还有do while,if else,switch之类的,这些都是很常用,我们将在以后的课程中逐步来学习。本节课先把第三、四课的汇编程序改用C来写一写,进一步领会一下C和汇编的差别。 我们先看看C的一些运行运算符。
第三课我们讲的跑马灯,用二种方式,一种移位一种查表来实现,现在我们来看看实现这些功能的C程序。首先是移位方式
sfr LedPort=0x80;是特殊功能寄存器声明,P0口地址是0x80,我们这里声明LedPort就是指向P0口,这样在程序里就可以直接写LedPort来代替写P0,这个与汇编相似。 uchar dat;这是定义一个无符号单字节变量,把它放在程序顶,称为全局变量,这样,在每个子函数里都可以对它进行引用、修改,在整个程序执行中都占用固定的RAM空间。相对应的就是局部变量,比如我们在mDelay函数里定义的i,j就是局部变量,它们只有在函数执行前才生效,结束后就消失了,占用的RAM空间会被释放,不能被其它函数引用,在C里面,我们一般建议能用局部变量就不用全局变量,这是因为单片机的RAM空间有限,可要节约使用喔~~ if(!dat)dat=1;从图一中我们可以知道符号“!”是逻辑非,即如果dat是0,那么!dat之后,结果就是1(真),如果dat是非0(注意,只要是非0,不管是1、2、3戓什么值),那么!dat结果就是0(假),逻辑判断是很常用的,大家认真领会一下。 if(表达式1)表达式2; 是一条判断语句,根据表达式1运算结果来判断是否执行表达式2,只有在结果为1(真)的时候才会执行。 LedPort=~dat;是将dat值按位取反后送到P0口,“~”是按位取反运算符,比如第一次执行时dat的值为1即二进制的0000 0001 ,那么按位取反后就是1111 1110,然后再送到P0口,这样,我们就可以点亮P0口上最低位的LED了。 dat=1;把dat的值左移1位,“”是左移,位数可以自己喜欢啦,不一定1位,比如dat=2就是左移2位。这个式子完整的表达应该是 dat=dat1; 这样看比较清楚,先把dat左移1位再赋值给dat本身。在C里常有这种写法,称为复合赋值运算,含义就是变量与表达式先进行运算符所要求的运算,再把运算结果赋值给参与运算的变量,比如dat-=1;和式子dat=dat-1;是一致的,其它一些运算也可以写成这种方式,这里不再详细说明,以后用到就会明白。 这里的移位操作跟汇编不同,移位后,原来的位置是用0补充的,不象是汇编里的循环移位。比如dat如果是1111 1111那么执行dat=1;后,结果就变成1111 1110。大家想想,如果左移8位后结果是什么? 结果是0,呵呵,所以我们在开始放了一句判断if,如果dat是0就将dat写成1,这样,这个跑马灯就可以周而复始的跑了。另外补充一下,C里也有循环移位的指令,但没有带进位位移位的指令,这里暂时不详细讲这个,以后用到再说。 .我们再来看看第3课里查表方式实现的跑马灯。
uchar code Tab[]是存放要显示的数值在ROM里,要引用里面的数据比如第11个只要直接写出Tab[10]即可(第1个是0),注意这语句里有个
您可能关注的文档
- 2业务领域及技术交流.DOC
- 2保险条款b.PDF
- 2全球视域下学生核心素养模型的构建.DOC
- 2国家基本药物四川省补充药物优化调整目录.DOC
- 2底波高度法当工件的材质和厚度不变时.PPT
- 2种海绵移植块周年生长的观测 - 厦门大学学报(自然科学版).PDF
- 2第二章官能团化学.PPT
- 2系统解剖学.DOC
- 2苏澳海事水产类科.PPT
- 2转诊单 - 高雄市立大同医院.DOC
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)