单片机汇编程设计案例精编.doc

单片机汇编程设计案例精编.doc

ID:55791400

大小:2.49 MB

页数:161页

时间:2020-06-02

单片机汇编程设计案例精编.doc_第1页
单片机汇编程设计案例精编.doc_第2页
单片机汇编程设计案例精编.doc_第3页
单片机汇编程设计案例精编.doc_第4页
单片机汇编程设计案例精编.doc_第5页
资源描述:

《单片机汇编程设计案例精编.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、51单片机汇编课程设计案例精编MSC5151单片机汇编课程设计案例精编1MSC511第六课C51基础1简结键盘去抖方法5【小雨的成长】外部中断的简单应用10第七课  按键处理13[单片机教程]第九课中断应用—红外解码15[单片机教程]第十课LCD1602显示2051单片机与串口通信(含代码)24[单片机教程]第十二课ADC0832应用28【小雨的成长】简单东西复杂玩之流水灯37lcd  ko57《51单片机汇编课程设计案例精编》源代码3181空调温度控制器102简易电子琴设计106设计实验跑马灯1111温度采集系统112A/D与D/A转换117单片机MCS-

2、51系列指令快速记忆法118汇编语言在51单片机中的所有指令有那些122单片机复位电路设计128单片机复位电路的可靠性分析135I2C总线原理及应用实例143三极管的基本放大电路146AVR,C51和PIC八位单片机性能比较148电力电子器件的缓冲电路152利用PC的RS232口控制LED灯155十六进制显示159二进制转换成十六进制的方法159第六课C51基础更新时间:2009年01月08日浏览次数:183作者:来源:  上一课我们讲了一些C51的知识,并且把第一、二课的汇编程序用C写了出来,今天我们继续学习一些C51的基础知识。上节我们学过for,whi

3、le,除此还有dowhile,ifelse,switch之类的,这些都是很常用,我们将在以后的课程中逐步来学习。本节课先把第三、四课的汇编程序改用C来写一写,进一步领会一下C和汇编的差别。  我们先看看C的一些运行运算符。 第三课我们讲的跑马灯,用二种方式,一种移位一种查表来实现,现在我们来看看实现这些功能的C程序。首先是移位方式sfrLedPort=0x80;是特殊功能寄存器声明,P0口地址是0x80,我们这里声明LedPort就是指向P0口,这样在程序里就可以直接写LedPort来代替写P0,这个与汇编相似。  uchardat;这是定义一个无符号单字节

4、变量,把它放在程序顶,称为全局变量,这样,在每个子函数里都可以对它进行引用、修改,在整个程序执行中都占用固定的RAM空间。相对应的就是局部变量,比如我们在mDelay函数里定义的i,j就是局部变量,它们只有在函数执行前才生效,结束后就消失了,占用的RAM空间会被释放,不能被其它函数引用,在C里面,我们一般建议能用局部变量就不用全局变量,这是因为单片机的RAM空间有限,可要节约使用喔~~  if(!dat)dat=1;从图一中我们可以知道符号“!”是逻辑非,即如果dat是0,那么!dat之后,结果就是1(真),如果dat是非0(注意,只要是非0,不管是1、2、

5、3戓什么值),那么!dat结果就是0(假),逻辑判断是很常用的,大家认真领会一下。  if(表达式1)表达式2;  是一条判断语句,根据表达式1运算结果来判断是否执行表达式2,只有在结果为1(真)的时候才会执行。  LedPort=~dat;是将dat值按位取反后送到P0口,“~”是按位取反运算符,比如第一次执行时dat的值为1即二进制的00000001,那么按位取反后就是11111110,然后再送到P0口,这样,我们就可以点亮P0口上最低位的LED了。  dat<<=1;把dat的值左移1位,“<<”是左移,位数可以自己喜欢啦,不一定1位,比如dat<<=

6、2就是左移2位。这个式子完整的表达应该是  dat=dat<<1;  这样看比较清楚,先把dat左移1位再赋值给dat本身。在C里常有这种写法,称为复合赋值运算,含义就是变量与表达式先进行运算符所要求的运算,再把运算结果赋值给参与运算的变量,比如dat-=1;和式子dat=dat-1;是一致的,其它一些运算也可以写成这种方式,这里不再详细说明,以后用到就会明白。  这里的移位操作跟汇编不同,移位后,原来的位置是用0补充的,不象是汇编里的循环移位。比如dat如果是11111111那么执行dat<<=1;后,结果就变成11111110。大家想想,如果左移8位后结

7、果是什么?  结果是0,呵呵,所以我们在开始放了一句判断if,如果dat是0就将dat写成1,这样,这个跑马灯就可以周而复始的跑了。另外补充一下,C里也有循环移位的指令,但没有带进位位移位的指令,这里暂时不详细讲这个,以后用到再说。  .我们再来看看第3课里查表方式实现的跑马灯。  ucharcodeTab[]是存放要显示的数值在ROM里,要引用里面的数据比如第11个只要直接写出Tab[10]即可(第1个是0),注意这语句里有个code字眼,如果没有这个code,那么定义的数值将存放在RAM里,占用RAM空间,可以在程序里进行存取(看下面图四的程序,里面就有

8、这两个)。我们这里只放入跑马灯中一款花式,其它的大家

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。