导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[fangqi923]老古请帮我看看我写的这个程序,是不是可以



No.25094
作者:fangqi923
邮件:fangqi@sina.com
ID:10742
登陆:1次
文章数:13篇
最后登陆IP:61.240.13.67
最后登陆:2003/5/15 18:04:32
注册:2003/3/31 23:24:53
财富:141
发帖时间:2003/4/15 3:51:42
发贴者IP:210.52.160.203
标题:fangqi923:老古请帮我看看我写的这个程序,是不是可以实现我昨天和你说的那个功能!
摘要:No.25094老古请帮我看看我写的这个程序,是不是可以实现我昨天和你说的那个功能! 我没有用到中断,你看看可以吗?我想了一夜!希望你有时间能够帮我看看,我觉得理论上应该是可以的!


$INCLUDE  (C8051F020.INC)
;P1口输出BCD码,  P2口的0,1,2,3输出位地址数据,P2口的5,6分别为设置键,P2口的7键为输出键 低电平有效
;----------------------------------------------
SELECT_KEY   EQU P2.5  ;位置选择键
T_KEY   EQU P2.6  ;调整键
JDQ   EQU P2.7  ;输出键
S_DATA  DATA 50H   ;秒
M_DATA  DATA 51H   ;分
H_DATA  DATA 52H   ;时
T_DATA  DATA 53H  ;计数器

;程序从0000H单元开始
ORG 0000H
    LJMP MAIN
;------------------------------------------
;设置中断跳转程序地址入口
ORG 000BH;T0定时中断0入口地址
    LJMP DS0ZD;跳转到T0中断程序
;-------------------------------------------
;主程序开始设置各个寄存器和初始值,使之按一定的要求来完成
MAIN:
    MOV OSCXCN,#66H
    MOV WDTCN,#0DEH
    MOV WDTCN,#0ADH
    MOV XBR0,#04H
    MOV XBR1,#1EH
    MOV XBR2,#40H
    MOV P1MDOUT,#0FFH;两口复位
    MOV P2MDOUT,#0FFH
    MOV CKCON,#08H
    MOV OSCICN,#08H
WAIT:  
    MOV A,OSCXCN
    JNB ACC.7,WAIT
    MOV SP,#70H
    MOV R0,#00H
    MOV R1,#00H
    MOV R2,#00H   ;秒个位
    MOV R3,#00H   ;秒十位
    MOV R4,#00H   ;分个位
    MOV R5,#00H   ;分十位
    MOV R6,#00H   ;时个位
    MOV R7,#00H   ;时十位
    MOV S_DATA,#00H
    MOV M_DATA,#00H
    MOV H_DATA,#00H
    MOV T_DATA,#00H
MOV TMOD,#02H  ;T0采用方式2 自动装载
    MOV TL0,#06H  ;定时器初值
    MOV TH0,#06H
    SETB EA
    SETB ET0
    SETB TR0
;********************循环程序开始************************
START: 
LCALL FEN   
LCALL XSCX00
LCALL KEY
;LCALL CONTROL
AJMP START

;-------------------------------------------------
FEN:
MOV A,S_DATA
    LCALL HEX_BCD
    MOV R3,A
    MOV R2,B
;
    MOV A,M_DATA
    LCALL HEX_BCD
    MOV R5,A
    MOV R4,B
;    
    MOV A,H_DATA
    LCALL HEX_BCD
    MOV R7,A
    MOV R6,B
RET
;-------------------------------------------------
;显示程序开始1
XSCX00:;显示程序,将需要显示的位数和需要显示的数据起始地址写入再将BCD码表写入DPTR
    PUSH ACC
    MOV A,#00H
    MOV R0,#02H;将要显示数据的起始地址写入R0(这里是从分钟开始)
    MOV DPTR,#ZB0;将LED码表写入DPTR
    MOV R1,#04H;将所需要的显示位数写入R1
XSCX01:      
    MOV A,@R0;将数据传到A
    MOVC A,@A+DPTR;将所需要显示的BCD码写入A
    MOV P1,A;将BCD码传到P1口
    MOV A,P2;将位地址读入A
    CJNE A,#0FFH,GUO;检查位地址是0FFH,若不是则跳过,若是运行下一步
    MOV P2,#01H;将第一位传到P2口
    LJMP TIAOGUO;跳转到TIAOGUO
GUO:
    RL A;A中内容左移一位
    MOV P2,A;将位地址传出到P2口
TIAOGUO:
    LCALL YS0
    INC R0
    DJNZ R1,XSCX01
    MOV P2,#0FFH
    POP ACC
RET
;---------------------------------------------
;-------------------------------------------------
;显示程序开始2 只显示分钟,不显示小时
XSCX01:;显示程序,将需要显示的位数和需要显示的数据起始地址写入再将BCD码表写入DPTR
    PUSH ACC
    MOV A,#00H
    MOV R0,#02H;将要显示数据的起始地址写入R0(这里是从分钟开始)
    MOV DPTR,#ZB0;将LED码表写入DPTR
    MOV R1,#02H;将所需要的显示位数写入R1
XSCX01:      
    MOV A,@R0;将数据传到A
    MOVC A,@A+DPTR;将所需要显示的BCD码写入A
    MOV P1,A;将BCD码传到P1口
    MOV A,P2;将位地址读入A
    CJNE A,#0FFH,GUO;检查位地址是0FFH,若不是则跳过,若是运行下一步
    MOV P2,#01H;将第一位传到P2口
    LJMP TIAOGUO;跳转到TIAOGUO
GUO:
    RL A;A中内容左移一位
    MOV P2,A;将位地址传出到P2口
TIAOGUO:
    LCALL YS0
INC R0
    DJNZ R1,XSCX01
    MOV P2,#0FFH
    POP ACC
RET
;---------------------------------------------
;-------------------------------------------------
;显示程序开始3 只显示小时,不显示分钟
X ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:357232毫秒 查询6次