论坛风格切换切换到宽版
  • 3690阅读
  • 7回复

单片机程序的问题 [复制链接]

上一主题 下一主题
离线hampig
 
发帖
33480
只看楼主 倒序阅读 0楼 发表于: 2008-08-15
呵呵
请教下

如何把这两个程序合到一起


项目名称:来回流水灯
;硬件环境:at89s52
;硬件描述:p0口接八个led
;功能描述:led流水实验

;*******************************************************

      org 0000h
      ajmp start
      org 0030h

start:   mov p0,#0ffh
      mov a,#0feh
aaa:     mov p0,a
      lcall delay
      jnb p1.3,bbb
      rl a
      ajmp aaa
bbb:     mov a,#7fh
ccc:     mov p0,a
      lcall delay
      jnb p1.0,start
      rr a
      ajmp ccc

delay:   mov r7,#50
dl1:     mov r6,#100
dl2:     mov r5,#10
      djnz r5,$
      djnz r6,dl2
      djnz r7,dl1
      ret          
 
      end
离线hampig
发帖
33480
只看该作者 1楼 发表于: 2008-08-15
第二个程序

想用p2口
和第一个程序搞成一个程序
多谢了


#include<reg51.h>
#include <intrins.h>


void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}


flash()
{             p0=0x00;
delayms(250);
            p0=0xff;
delayms(250);
            p0=0x00;
delayms(250);
            p0=0xff;
delayms(250);
}

main()
{
unsigned char led;
led = 0xfe;
p0 = led;

while(1)
{

led = _crol_(led,1); //循环右移1位,点亮下一个led
p0 = led;
delayms(250);
if(led==0x7f)

{ flash();

p0=0x7f;

while(p0!=0xfe)
{

p0=p0<<7|p0>>1;//循环左移
delayms(250);
}
       
flash();

}

}
}
离线hampig
发帖
33480
只看该作者 2楼 发表于: 2008-08-15
第一个程序使用的p0口不变
第二个程序使用p2口
合并成一个程序
谢谢啦
离线BG4XCR
发帖
33381
只看该作者 3楼 发表于: 2008-08-15
两个程序之间是什么关系?
一个执行完了在执行另一个还是一起执行?
离线hampig
发帖
33480
只看该作者 4楼 发表于: 2008-08-15
谢谢啦
一起执行或顺序执行都可以
离线hampig
发帖
33480
只看该作者 5楼 发表于: 2008-08-15
或者简单些
让p0 p1 p2
同时执行第一个程序的功能也成啊
离线wycx
发帖
1497
只看该作者 6楼 发表于: 2008-08-15
用户被禁言,该主题自动屏蔽!
离线hampig
发帖
33480
只看该作者 7楼 发表于: 2008-08-15
问题解决啦
谢谢大家