| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2026 人关注过本帖, 1 人收藏
标题:帮忙注述 汇编语言
只看楼主 加入收藏
sweetno2
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-11-3
收藏(1)
 问题点数:0 回复次数:2 
帮忙注述 汇编语言
LED_0    EQU     30H
LED_1     EQU     31H
LED_2     EQU     32H
ADC        EQU        35H
TCNTA    EQU        36H
TCNTB    EQU        37H
H_TEMP    EQU        38H                ;温度上限
L_TEMP    EQU        39H                ;温度下限
FLAG    EQU        020H.0
H_ALM    BIT        P3.0
L_ALM    BIT        P3.1
SOUND    BIT        P3.7
CLOCK    BIT        P2.4
ST         BIT     P2.5
EOC     BIT     P2.6
OE         BIT     P2.7

        ORG     00H
        SJMP    START
        ORG        000BH
        LJMP    INT_T0
        ORG        001BH
        LJMP    INT_T1
                ORG             0030H
START:            MOV        LED_0,#00H
        MOV        LED_1,#00H
        MOV        LED_2,#00H
        MOV        DPTR,#TABLE
        MOV        H_TEMP,#35      ;上限35
        MOV        L_TEMP,#15      ;下限15
        MOV        TMOD,#12H
        MOV        TH0,#245
        MOV        TL0,#245
        MOV        TH1,#0D8H       ;和你的一样的数值.我的编译器不支持表达式
        MOV        TL1,#0F0H
        MOV        IE,#8aH
        CLR        C
        SETB    TR0                ;为ADC0808提供时钟

WAIT:        SETB    H_ALM
        SETB    L_ALM
        CLR     ST
                nop
        SETB     ST
                nop
        CLR     ST                ;启动转换
         JNB     EOC,$
        SETB     OE
                mov     p1,#0ffh
        MOV     ADC,P1                    ;读取AD转换结果
        CLR     OE
        MOV    A,ADC
        SUBB    A,L_TEMP               ;判断是否低于下限   (這個地方忽略了)
        JC        LALM
        mov     a,ADC
                SUBB    A,H_TEMP            ;判断是否高于上限
        JNC    HALM
        CLR    TR1
        LJMP    PROC1
LALM:        SETB            H_ALM                    ;低温报警
        CLR        L_ALM
        SETB    TR1
        CLR        FLAG
        LJMP    PROC1

HALM:        SETB            L_ALM                       ;高温报警
        CLR        H_ALM
        SETB    TR1
        SETB    FLAG
        LJMP    PROC1

PROC1:       MOV     A,ADC             ;数值转换
        MOV     B,#100
        DIV     AB
        MOV     LED_2,A
        MOV     A,B
        MOV     B,#10
        DIV     AB
        MOV     LED_1,A
        MOV     LED_0,B
        LCALL    DISP
        AJMP     WAIT

INT_T0:     CPL        CLOCK               ;提供ADC0808时钟
        RETI

INT_T1:            MOV        TH1,#0D8H
        MOV        TL1,#0F0H
        CPL        SOUND
        INC        TCNTA
        MOV        A,TCNTA
        JB        FLAG,I1               ;判断是高温警报还是低温警报
        CJNE    A,#30,RETUNE    ;低温警报声
        SJMP    I2
    I1:    CJNE    A,#20,RETUNE    ;高温警报声
    I2:    MOV        TCNTA,#0
        INC        TCNTB
        MOV        A,TCNTB
        CJNE    A,#25,RETUNE
        MOV        TCNTA,#0
        MOV        TCNTB,#0
        LCALL    DELAY2
RETUNE:    RETI

DISP:    MOV        A,LED_0            ;数码显示子程序
        MOVC    A,@A+DPTR
        CLR        P2.3
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.3

        MOV        A,LED_1
        MOVC    A,@A+DPTR
        CLR        P2.2
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.2

        MOV        A,LED_2
        MOVC    A,@A+DPTR
        CLR        P2.1
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.1
        RET

DELAY:    MOV        R6,#10
D1:        MOV        R7,#250
        DJNZ    R7,$
        DJNZ    R6,D1
        RET
DELAY2:    MOV        R5,#20
D2:        MOV        R6,#20
D3:        MOV        R7,#250
        DJNZ    R7,$
        DJNZ    R6,D3
        DJNZ    R5,D2
        RET
TABLE:     DB         3FH,06H,5BH,4FH,66H
        DB         6DH,7DH,07H,7FH,6FH
        END
搜索更多相关主题的帖子: 汇编语言 
2008-12-10 11:40
aibaodong1
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-11-8
收藏
得分:0 
LED_0    EQU     30H                    ;发光2极管0的地址码30h
LED_1     EQU     31H                   ;同上
LED_2     EQU     32H                   ;同上
ADC        EQU        35H               ; 模数装换地址码35h
TCNTA    EQU        36H
TCNTB    EQU        37H
H_TEMP    EQU        38H                ;温度上限
L_TEMP    EQU        39H                ;温度下限
FLAG    EQU        020H.0               
H_ALM    BIT        P3.0                 ;H_ALM代表P3端口第0位!
L_ALM    BIT        P3.1                   ;同上
SOUND    BIT        P3.7                  ;同上
CLOCK    BIT        P2.4                    ;同上
ST         BIT     P2.5                    ;同上
EOC     BIT     P2.6                         ;同上   
OE         BIT     P2.7                    ;同上   

        ORG     00H                           ;程序起始地址
        SJMP    START                         ;跳到标号位START处执行程序
        ORG        000BH                        ;定时器0溢出中断
        LJMP    INT_T0                        ;跳到标号位INT_T0     处执行中断程序
        ORG        001BH                        ;定时器1溢出中断
        LJMP    INT_T1                        ;跳到标号为INT_T1  处执行中断程序
                ORG             0030H           ;程序执行地址
START:            MOV        LED_0,#00H        ;给led_0( 也就是地址码为30h)送0
        MOV        LED_1,#00H                    ;同上
        MOV        LED_2,#00H                 ;同上
        MOV        DPTR,#TABLE                 ;查找表首地址送给数据指针DPTR
        MOV        H_TEMP,#35      ;上限35
        MOV        L_TEMP,#15      ;下限15
        MOV        TMOD,#12H                    ;定时器1采用软件中断!方式1定时!!定时器0采用软件中断!方式2定时
        MOV        TH0,#245                     ;tho,tl0合起来也就是2^16-thotl0=你要定时的时间
        MOV        TL0,#245                       
        MOV        TH1,#0D8H       ;和你的一样的数值.我的编译器不支持表达式
        MOV        TL1,#0F0H        
        MOV        IE,#8aH            ;开总允许中断ea合定时器0,定时器1中断!!
        CLR        C                    ;cy清0
        SETB    TR0                ;为ADC0808提供时钟
                                    
WAIT:        SETB    H_ALM            
        SETB    L_ALM
        CLR     ST
                nop
        SETB     ST
                nop
        CLR     ST                ;启动转换
        JNB     EOC,$               ;判断P2。6是否为0,为0停止。不为0继续向下执行!
        SETB     OE                ;P2。7置1
                mov     p1,#0ffh    ;给P1送8个1
        MOV     ADC,P1                    ;读取AD转换结果
        CLR     OE                    ;P2。7清0
        MOV    A,ADC                   ;把模数的值送给A
        SUBB    A,L_TEMP               ;判断是否低于下限   (這個地方忽略了)
        JC        LALM                    ;cy=1就是低于下限值就转到标号LALM处执行。否则继续向下!
        mov     a,ADC                     ;不低于下限值就把数模转换的值在送给A
                SUBB    A,H_TEMP            ;判断是否高于上限值
        JNC    HALM                        ;CY=0就是高于上限值转到标号为HALM处执行。否则继续向下
        CLR    TR1                          ;停止定时器1计数
        LJMP    PROC1                    ;温度正常跳到PEOC1处执行!
LALM:        SETB            H_ALM                    ;低温报警
        CLR        L_ALM
        SETB    TR1
        CLR        FLAG
        LJMP    PROC1

HALM:        SETB            L_ALM                       ;高温报警
        CLR        H_ALM
        SETB    TR1
        SETB    FLAG
        LJMP    PROC1

PROC1:       MOV     A,ADC             ;数值转换
        MOV     B,#100
        DIV     AB
        MOV     LED_2,A
        MOV     A,B
        MOV     B,#10
        DIV     AB
        MOV     LED_1,A
        MOV     LED_0,B
        LCALL    DISP
        AJMP     WAIT

INT_T0:     CPL        CLOCK               ;提供ADC0808时钟
        RETI

INT_T1:            MOV        TH1,#0D8H
        MOV        TL1,#0F0H
        CPL        SOUND
        INC        TCNTA
        MOV        A,TCNTA
        JB        FLAG,I1               ;判断是高温警报还是低温警报
        CJNE    A,#30,RETUNE    ;低温警报声
        SJMP    I2
    I1:    CJNE    A,#20,RETUNE    ;高温警报声
    I2:    MOV        TCNTA,#0
        INC        TCNTB
        MOV        A,TCNTB
        CJNE    A,#25,RETUNE
        MOV        TCNTA,#0
        MOV        TCNTB,#0
        LCALL    DELAY2
RETUNE:    RETI

DISP:    MOV        A,LED_0            ;数码显示子程序
        MOVC    A,@A+DPTR
        CLR        P2.3
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.3

        MOV        A,LED_1
        MOVC    A,@A+DPTR
        CLR        P2.2
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.2

        MOV        A,LED_2
        MOVC    A,@A+DPTR
        CLR        P2.1
        MOV        P0,A
        LCALL    DELAY
        SETB    P2.1
        RET

DELAY:    MOV        R6,#10                延时子程序
D1:        MOV        R7,#250
        DJNZ    R7,$
        DJNZ    R6,D1
        RET
DELAY2:    MOV        R5,#20                ;延时子程序
D2:        MOV        R6,#20
D3:        MOV        R7,#250
        DJNZ    R7,$
        DJNZ    R6,D3
        DJNZ    R5,D2
        RET
TABLE:     DB         3FH,06H,5BH,4FH,66H
        DB         6DH,7DH,07H,7FH,6FH
        END
剩下的都是子功能了!!都标完了!!不明白的说!
2009-11-08 11:12
快速回复:帮忙注述 汇编语言
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024763 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved