[讨论] 急......可以将两个程序合并而互不影响吗?

hongfumail   2007-5-23 09:19 楼主
下面是两个汇编程序.一个是数码管显示程序,一分钟+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      

回复评论 (15)

Re: 急......可以将两个程序合并而互不影响吗?

最好在定时中断里面做显示 其他的就好控制了
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-5-23 09:29

Re: 急......可以将两个程序合并而互不影响吗?

可以,不过需要自己修改一下代码。
点赞  2007-5-23 09:30

Re: 急......可以将两个程序合并而互不影响吗?

[quote user="小51"]最好在定时中断里面做显示 其他的就好控制了 [/quote]

用定时中断怎么做显示呢?可以具体点吗
有没有此类的程序啊?

先谢过了
点赞  2007-5-23 11:54

Re: 急......可以将两个程序合并而互不影响吗?

完全可以
呼呼...在校应届大四学生,代做电子类毕业设计(测量类、仪器类、控制类、无线通信类、电子产品类、界面设计类、纯论文类等等,一一俱全)。涉及各种单片机软硬件设计、电路模拟分析、FPGA、CPLD、ARM7/ARM9、LINUX、VB/VC++/QT界面等等。包过。。。欢迎咨询。Tel:13957160506。QQ:273437087
点赞  2007-5-23 12:41

Re: 急......可以将两个程序合并而互不影响吗?

完全可以,只要把第二个程序的头文件去掉,只保留延时程序就行了.然后它他们合并放在一起就成了.
点赞  2007-5-23 13:09

Re: 急......可以将两个程序合并而互不影响吗?

因为不了解你所要做的功能,如果能把要求贴上来,可能把这个程序改得更精简一些~~~
点赞  2007-5-23 13:11

Re: 急......可以将两个程序合并而互不影响吗?

晕 这是不可以的 延时6s的时候怎么可能数码管显示
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-5-23 17:38

Re: 急......可以将两个程序合并而互不影响吗?

有什么具体问题 可以到华岳电子板块看看 应该可以知道答案的
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-5-23 17:41

Re: 急......可以将两个程序合并而互不影响吗?

做时钟吗????用定时器定时1秒~~~
点赞  2007-5-23 18:04

Re: 急......可以将两个程序合并而互不影响吗?

把思路合并了,呵呵
世界是个圈,人生也是个圈。
点赞  2007-5-24 00:04

Re: 急......可以将两个程序合并而互不影响吗?

只能用中断
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-5-26 10:53

Re: 急......可以将两个程序合并而互不影响吗?

好了没?
呼呼...在校应届大四学生,代做电子类毕业设计(测量类、仪器类、控制类、无线通信类、电子产品类、界面设计类、纯论文类等等,一一俱全)。涉及各种单片机软硬件设计、电路模拟分析、FPGA、CPLD、ARM7/ARM9、LINUX、VB/VC++/QT界面等等。包过。。。欢迎咨询。Tel:13957160506。QQ:273437087
点赞  2007-5-28 12:36

Re: 急......可以将两个程序合并而互不影响吗?

没声音了
南京璞晓电子   www.cpx0.com需要 msn:njlianjian@hotmail.com
点赞  2007-5-29 09:33

Re: 急......可以将两个程序合并而互不影响吗?

把其中一个做成子程序,
点赞  2007-6-2 17:48

Re: 急......可以将两个程序合并而互不影响吗?

只需要说清楚两个程序的功能就行了,不说的话给外人改。。很容易出问题。。。。说清楚了,感觉不会很难。。。。。 因为一个是延迟,一个是显示。。。。
点赞  2007-6-2 21:20
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复