导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→急....怎么实现两个程序合并而互不影响???[求助]

* 106257: 急....怎么实现两个程序合并而互不影响???[求助]

   屎坑关刀 
屎坑关刀发表的帖子 

 急....怎么实现两个程序合并而互不影响???[求助]
下面是两个汇编程序.一个是数码管显示程序,一分钟+1;另一个是延时程序. 
可不可以将两个程序合并,但是两个程序互不影响.
怎么合并,请详细说说

请指教.不胜感激....

 ;本程序实现8段码动态显示功能
 org 0000h
 ajmp main
 org 0030h
main:
 mov dptr,#tab  ;将表头位置送入DPTR           
 mov 30h,#00h            ;将30H个位显示缓冲单元清零          
 mov 31h,#00h            ;将31H十位显示缓冲单元清零          
 mov 32h,#00h            ;将32H百位显示缓冲单元清零          
 mov 33h,#00h            ;将33H千位显示缓冲单元清零          
loop:
 mov r4,#143  ;r4作为软件计数器
tt2: lcall display
     jb p3.0,tt
     ajmp tt1
tt:  lcall delay1ms
     jb p3.0,tt2
tt1:    lcall display  ;调用显示程序 
 djnz r4,tt1  ;r4减一后不为零,返回tt1
 lcall update  ;调用刷新显示子程序
 ajmp loop  ;跳回loop,继续循环显示.
display:
 mov dptr,#tab                    
 mov r7,#100  ;软件计数器赋值                          
dd1:
 mov a,30h               ;将显示缓冲区30H中的值送入ACC           
 movc a,@a+dptr 
 mov p0,a                ;将要显示的数送入P0口                   
 clr p2.4               ;选中第一个数码管                           
 lcall delay1ms        ;延时1mS                              
 setb p2.4                ;关个位显示单元                         
 mov a,31h               ;将显示缓冲区别31H中的值送入A           
 movc a,@a+dptr 
 mov p0,a                ;将要显示的数送入P0口                   
 clr p2.5               ;开十位显示单元                         
 lcall delay1ms        ;延时1mS                              
 setb p2.5                ;关十位显示单元                         
 mov a,32h               ;将显示缓冲区32H中的值送入ACC           
 movc a,@a+dptr 
 mov p0,a                ;将要显示的数送入P0口                   
 clr p2.6              ;开百位显示单元                         
 lcall delay1ms        ;延时1mS                              
 setb p2.6              ;关百位显示单元                         
 mov a,33h               ;将显示缓冲区33H中的值送入ACC           
 movc a,@a+dptr 
 mov p0,a                ;将要显示的数送入P0口                   
 clr p2.7              ;开千位显示单元                         
 lcall delay1ms        ;延时1mS                              
 setb p2.7            ;关千位显示单元                         
 djnz r7,dd1             ;R7不等于0返回至DD1处                   
 ret                     ;R7等于0子程序返回                      

update:                         ;刷新显示子程序
 inc 30h   ;个位显示缓冲单元加一  
 mov a,30h
 cjne a,#10,exit  ;还没加到十,退出
 mov 30h,#00h  ;加到十了,个位清零
 inc 31h   ;十位显示缓冲单元加一  
 mov a,31h                                               
 cjne a,#10,exit         ;还没加到十,退出            
 mov 31h,#00h            ;加到十了,十位清零          
 inc 32h   ;百位显示缓冲单元加一  
 mov a,32h                                               
 cjne a,#10,exit         ;还没加到十,退出            
 mov 32h,#00h            ;加到十了,百位清零          
 inc 33h   ;千位显示缓冲单元加一  
 mov a,33h                                                                           
 cjne a,#10,exit         ;还没加到十,退出            
 mov 33h,#00h            ;加到十了,千位清零          
exit:
 ret   ;刷新显示子程序返回
delay1ms:
 
 mov r6,#10
tt7:
 mov r5,#50
 djnz r5,$
 djnz r6,tt7
 ret
delay10ms:
 mov r6,#100
tt8:
 mov r5,#50
 djnz r5,$
 djnz r6,tt8
 ret
tab:
 db 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
 end


延时控制程序:
ORG 0000H
JMP MAIN
MAIN: CLR P1.0
      JB P3.0, $     ;P3.0为高电平停止
      CALL DELAY_2MS
      JB P3.0, main
      SETB P1.0
      CALL DELAY_2MS
      CLR P1.0
      CALL DELAY_6S
      JMP MAIN

delay_2ms:
 mov r6,#20
tt7:
 mov r5,#50
 djnz r5,$
 djnz r6,tt7
 ret
delay_6s:                   ;6,018,356uS
 mov r6,#118
tt6:
 mov r5,#255
 djnz r5,$
 djnz r6,tt6
 ret
END

发表时间:2007年5月23日9:23:24

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:[求助]和变频器相关的芯片我想找一些芯片,可以实现将频率信号转换为4-20mA的电流信号。请大侠们指
[下一篇帖子]:顶!呵呵!