我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: C51汇编蝈蝈进,一个小程序 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

不令而行





性别: 保密 状态: 该用户目前不在线
等级: 初出茅庐
发贴: 49
威望: 0
浮云: 1293
在线等级:
注册时间: 2006-09-13
最后登陆: 2007-06-26

5come5帮你背单词 [ relative /'relətiv/ a. 相对的,相关的;n. 亲人,亲戚 ]


C51汇编蝈蝈进,一个小程序

利用C51的两个十六位定时/计数器进行频率测量

T1计时;T0计数,外接输入信号

T1输入处值-10ms,让其溢出100次,即达到一秒的定时。这是读取T0的中断次数和读数,将其分别存入DHIGH、DMID和DLOW,再将其输出至LED显示(16进制显示)。

哪位蝈蝈能指证下哪儿有错误。


程序如下:
    DLOW   DATA 70H
    DMID   DATA 71H
    DHIGH   DATA 72H

      ORG   0000H
    AJMP   MAIN
    ORG   000BH
    AJMP   CTC0
    ORG   001BH
    AJMP   CTC1
    ORG   0100H

MAIN:     MOV   TMOD,#1DH
   
    MOV   TL0,#00H
    MOV   TH0,#00H
    MOV   TH1,#0D8H
    MOV   TL1,#0F0H
    MOV   R0,#64H
    MOV   R1,#00H
   
WAIT:   AJMP   WAIT         ;等待中断


CTC0:   INC   R1
    MOV   TH0,#00H
    MOV   TL0,#00H
    CLR   TF1           ;清除溢出标志
    JNB   P3.2,$         ;等待P3.2变高
    SETB   TR0
    RETI


CTC1:   DJNZ   R0,STEP0       ;计数器R0减1,不为0则转移

    CLR   TR1         ;R1为0,终止计数、开始读取
    CLR   TR0
    MOV   DLOW,TL0
    MOV   DMID,TH0
    MOV   DHIGH,R1
    ACALL   DISP
    ACALL   DEL1S  
   
AGAIN:   MOV   TMOD,#01DH
    MOV   TL0,#00H
    MOV   TH0,#00H
    MOV   TH1,#0D8H
    MOV   TL1,#0F0H

    SETB   EA
    JNB   P3.2,$         ;等待P3.2变高
  SETB   TR0
    SETB   TR1
    AJMP   STEP1

STEP0:   MOV   TH1,#0D8H       ;R1不为0,装载T0初值,继续计时
    MOV   TL1,#0F0H
    CLR   TF1         ;清除溢出标志
    SETB   TR1
STEP1:   RETI


DISP:   MOV   A,DLOW
    ANL   A,#0FH
    MOV   DPTR,#TAB
    MOV   P2,0FEH
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS

    MOV   P2,0FDH    
    MOV   A,DLOW
    SWAP   A
    ANL   A,#0FH
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS

    MOV   P2,0FBH
    MOV   A,DMID
    ANL   A,#0FH
    MOV   DPTR,#TAB
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS
   

    MOV   P2,0F7H
    MOV   A,DMID
    SWAP   A
    ANL   A,#0FH
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS

    MOV   P2,0EFH
    MOV   A,DHIGH
    ANL   A,#0FH
    MOV   DPTR,#TAB
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS
   
    MOV   P2,0DFH
    MOV   A,DHIGH
    SWAP   A
    ANL   A,#0FH
    MOVC   A,@A+DPTR
    MOV   P0,A
    ACALL DEL1MS

    RET

DEL1S:   MOV   R5,#08H
DELY1:   MOV   R6,#0FFH
DELY2:   MOV   R7,#0FFH
DELY3:   DJNZ   R7,DELY3
    DJNZ   R6,DELY2
    DJNZ   R5,DELY1
    RET

DEL1MS:   MOV   R6,#02H
DEL1:   MOV   R7,#0FFH
    DJNZ   R7,$
    DJNZ   R6,DEL1
    RET

TAB:   DB   0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
    DB   080H,090H,088H,083H,0C6H,0A1H,086H,08EH


    END
顶端 Posted: 2007-05-29 15:58 | [楼 主]
hxf666





性别: 帅哥 状态: 该用户目前不在线
等级: 荣誉会员
发贴: 3544
威望: 3
浮云: 421
在线等级:
注册时间: 2004-12-25
最后登陆: 2011-11-19

5come5帮你背单词 [ france /'fra:ns/ n. 法国 ]


具体的看不出只是觉得51在相应实时系统时中断里不能有太多工作
建议将中断工作放到MAIN中处理
顶端 Posted: 2007-05-30 14:48 | [1 楼]
我来我网·5come5 Forum » 电子设计·数学建模

Total 0.017645(s) query 7, Time now is:12-29 11:59, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号