房天下 > 房天下问答 > 业主生活 > 其他
  • 用单片机控制流水灯的六种方案,要程序电路图,详细讲解

    提问者:tuxiaojing

    发布于2010-09-26

共1个回答
  • 小二儿黑 丨Lv 4
    ;//*********************************************************;//实现功能:本程序实现在P0口模拟一种流水灯程序;//*********************************************************p_out equ P0 ;宏定义P0为p_outorg 00h ;程序的开始地址ajmp main ;跳到mainorg 030h;//******************主函数***************************;//描 述:实现在P0口模拟一个流水灯程序;//设计人: lishengling24;//****************************************************main: ;主函数 mov sp,#50h ;设置sp堆栈的初始位置 mov a,#0feh ;初始化accmain_1: mov p_out,a ;点亮一个灯 mov r1,#250 ; mov r0,#250 ; Call delay_time;调用时间延迟子程序,上面两句是设置延迟时间 mov p_out,#0ffh;熄灭灯 RL a ;循环左移一位准备点亮下一个灯 JMP main_1 ;跳到main_1循环;//******************时间延迟函数**********************;//描 述:用指令实现延时一段时间;//入口参数:r1为高位,r0为低位,都是十六进制表示?;//出口参数:无;//设计人:lishengling24;//****************************************************delay_time: push acc ;acc入栈 push psw ;psw入栈 mov a,r0 ;把r0赋给acc inc r1 ;r1加1,因为djnz是先减1再比较是否为零,如果不加1 ;当r1的初值为0的时候,减1后变成了0x0ff,改变了当 ;初预想的延迟时间计数值 inc r0 ;道理和inc r1 一样,当然r0和r1的初值不能为0x0ffloop: nop nop nop nop nop nop djnz acc,loop ; mov a,r0 ; djnz r1,loop ; pop psw ;psw出栈 pop acc ;acc出栈 ret end ;需要其他5种方案的程序和电路,在百度HI我。以下是C的写法://*********************************************************//实现功能:本程序实现在P0口模拟一个流水灯程序//*********************************************************#include <reg51.h>#define p_out P0 //宏定义输出的i/o口为p0//******************时间延迟函数**********************//描 述:用指令实现延时一段时间//入口参数:int i,为时间延迟参数//****************************************************void delay_time(int i){ while(i) i--;}//******************主函数***************************//描 述:实现在P0口模拟一个流水灯程序//****************************************************void main(void){ unsigned char i=0; //初始化一个局部变量为0 p_out=0xff; //初始化将要输出的i/o口,输出高电平,熄灭所有灯 while(1) { for(i=0;i<8;i++) { p_out=~(1<<i);//点亮一个灯, delay_time(50000); //延迟一段时间 p_out=0xff;//熄灭所有灯 } }}
    +10 2010-09-26 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。