欢迎来到天天文库
浏览记录
ID:9058119
大小:58.00 KB
页数:6页
时间:2018-04-16
《流水灯c语言及汇编程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、51单片机流水灯C语言源程序文件说明:流水灯C程序程序说明:MCU采用AT89S51,外接11.0592M晶振,P2口输出 #include //51系列单片机定义文件#defineucharunsignedchar//定义无符号字符#defineuintunsignedint//定义无符号整数voiddelay(uint); //声明延时函数voidmain(void){uinti;uchartemp;while(1){ temp=0x01; for(i=0;i<8;i++)//8个
2、流水灯逐个闪动 { P2=~temp; delay(100); //调用延时函数 temp<<=1; }temp=0x80;for(i=0;i<8;i++)//8个流水灯反向逐个闪动 { P2=~temp; delay(100); //调用延时函数 temp>>=1; } temp=0xFE;for(i=0;i<8;i++)//8个流水灯依次全部点亮 { P2=temp; delay(100); //调用延时函数 temp<<=1; } te
3、mp=0x7F; for(i=0;i<8;i++)//8个流水灯依次反向全部点亮 { P2=temp; delay(100); //调用延时函数 temp>>=1; }}}voiddelay(uintt) //定义延时函数 {registeruintbt; for(;t;t--) for(bt=0;bt<255;bt++); }二、汇编程序:(同样P2为输出端口)u左移依次循环:ORG0000HSJMPMAINORG0030H主程序开始的地址MAIN
4、:MOVR2,#08H设置循环次数MOVA,#0FEH赋初值NEXT:MOVP2,A把初值送到P2口LCALLDELAY延时RLA左移一位DJNZR2,NEXT判断循环次数是否到,没有跳转到NEXT继续执行SJMPMAIN重复循环DELAY:MOVR3,#0FFH延时程序DEL2:MOVR4,#0FFHDEL1:NOPDJNZR4,DEL1DJNZR3,DEL2RETEND结束u二边散开后缩进(查表指令)ORG0000HSJMPMAINORG0030HMAIN:MOVSP,#60HMOVDPTR,#TAB把表首地址送到D
5、PTRMOVR2,#06设置循环次数LOOP:CLRA清零AMOVCA,@A+DPTR查表指令MOVP1,A把A中的值送到P1口LCALLDELAY延时INCDPTR改变数据指针DJNZR2,LOOP判断循环是否到,没有跳转LOOPSJMPMAIN重复循环DELAY:MOVR0.#10延时DEL2:MOVR1,#200DEL1:MOVR3,#255DJNZR3,$DJNZR1,DEL1DJNZR0,DEL2RETTAB:DB0E7H,0DBH,0BDH,7EH,0BDH,0DBH查表END
此文档下载收益归作者所有