No.24601 作者: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/11 23:05:45 发贴者IP:210.52.160.144 标题:fangqi923:一个数字中程序,请高手帮我看看,为什么走时不准确。 摘要:No.24601一个数字中程序,请高手帮我看看,为什么走时不准确。 关于这个程序是我修改别人的,我有两个问题,希望高手能够给我回答一下 1。为什么这个数字钟的走时不准确,上面的数字都是算过了,请高手给看看,是不是有什么缺陷! 2。如果加上调整时间,和闹表的功能,具体的应该怎么做呢?给一点思路,好吗? 我是菜鸟,不是很懂,但是一定要弄明白,希望高手能给我指点,3Q! $INCLUDE (C8051F020.INC) ;P1口输出BCD码, P2口的0,1,2,3输出位地址数据 ;---------------------------------------------- ;程序从0000H单元开始 org 0000h ljmp ks ;------------------------------------------ ;设置中断跳转程序地址入口 org 000bh;T0定时中断0入口地址 ljmp ds0zd;跳转到T0中断程序 org 0013h;INT1中断入口地址 ljmp zd1;跳到INT1中断程序 org 001bh;T1中断入口地址 ljmp ds1zd;跳到定时中断1程序 ;------------------------------------------- ;主程序开始设置各个寄存器和初始值,使之按一定的要求来完成 ks: MOV OSCXCN,#60H mov wdtcn,#0deh mov wdtcn,#0adh mov xbr0,#04h mov xbr1,#1eh mov xbr2,#40h mov p0mdout,#0ffh mov p1mdout,#0ffh;两口复位 mov p2mdout,#0ffh mov p3mdout,#0ffh mov ckcon,#08h WAIT: mov a,oscxcn jnb acc.7,WAIT 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 sp,#30h mov 10h,#14h;T0中断20次(产生10ms信号)14 mov 11h,#64h;产生1秒信号64 mov th0,#06h;设置定时器0的计数初值 mov tl0,#06h mov th1,#0ffh;设置定时器1的计数初值 mov tl1,#0ffh mov tmod,#0e2h;将T0设置为内定时,工作方式2;T1设置为外计数,工作方式2 mov ip,#02h;将定时器0的优先级设置为1 mov ie,#8fh;中断0,1定时中断0,1开 mov tcon,#50h;定时器开始工作 ;------------------------------------------------- ;显示程序开始 xscx00:;显示程序,将需要显示的位数和需要显示的数据起始地址写入再将BCD码表写入dptr mov a,#00h mov r0,#04h;将要显示数据的起始地址写入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 ......
>>返回讨论的主题
|