No.5794 作者:feiji11 邮件:buddhe@163.com ID:104973 登陆:1次 文章数:2篇 最后登陆IP: 最后登陆:2008/5/9 21:02:28 注册:2008/5/9 21:02:28 财富:100 发帖时间:2008/5/9 21:30:12 发贴者IP:59.172.180.112 标题:feiji11:[求助]方波计数及显示程序 摘要:No.5794[求助]方波计数及显示程序 我单独用显示程序送个数据可以在我的电路板上正常显示,加上计数程序后PROTEUS中仿真也可以正常显示,可是在我的电路板上就只能显示三个8了。P0口电压都是1.8~2.1V. 老古先生及坛内的高手们,帮我看一下这个程序有没有什么问题。看看是不是寄存器冲突了或其他什么问题。 ;TO口输入1HZ左右的方波信号,用定时器获得方波的一个周期,再计算1分钟的周期数 ;我的锁存器373使能端全部接地使能,P0口送出数据去显示,P2口锁存信号 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;计数程序 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ORG 00H MAIN: MOV TMOD,#26H ;Timer1工作在定时模式2下,Timer0工作在计数模式2下 MOV TH1,#56 ;定时器Timer1初始值设为56 MOV TL1,#56 MOV TH0,#0FFH ;计数器Timer0初始值设为0FFH,计数一次就溢出 MOV TL0,#0FFH RESTART: CLR A ;清零A MOV R0,A ;清零R0 SETB TR0 ;启动计数器Timer0 CHECK0: JNB TF0,CHECK0 ;第一个周期波放过,以便得到完整的周期波 CLR TF0 SETB TR1 ;启动定时器Timer1 CHECK1: JB TF0,STOP_T1 ;一次计数完成则停止定时器Timer1 JNB TF1,CHECK1 ;定时器Timer1没溢出则继续检测 CLR TF1 ;定时器Timer1溢出则清零TF1,重新计数 INC A ;完成一次200uS的定时,A加1 CJNE A,#250,CHECK1 ;完成200×250=0.05s定时,R0加1 CLR A INC R0 ;R0存储0.05S的个数 JMP CHECK1 STOP_T1: CLR TF0 CLR TR1 ;关闭定时器Timer1 CALCULATE: ;计算一分钟的方波数 MOV B,R0 ;公式:60/(0.05*R0)=1200/R0=6*(200/R0)=6*商+6*余数/R0 MOV A,#200 DIV AB MOV R1,B MOV B,#6 MUL AB MOV R2,A MOV B,R1 MOV A,#6 MUL AB MOV B,R0 DIV AB ADD A,R2 CALL DISPL ......
>>返回讨论的主题
|