打印

急求单片机程序问题,非常急(中断部分问题

[复制链接]
4249|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
面包超人|  楼主 | 2013-4-13 13:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;系统主程序
;系统译码器地址分配
P8255        EQU      0F103H
R6116        EQU      0F102H
P74LS373     EQU      0F101H
P80C51       EQU      0F100H

;外部RAM地址分配
CDATA       EQU      00H          ;数据采集单元首地址
SETTEMP    EQU      40H          ;设定速度首地址
TEMPMAX   EQU      80H          ;报警给定值首地址
TAB         EQU      0C0H         ; 字型码表首地址
;内部RAM地址分配
ALARMAX   EQU       00H         ;限报警标志首地址
BUFF        EQU       24H         ; 数据缓冲区
DPLBUFF    EQU       25H         ;显示缓冲区
COUNT      EQU      -10          ;定时量0.1s
             ORG              0000H
             JMP       MAIN
             ORG      0003H
             LJMP      INTT0
             ORG      000BH
             LJMP      INTT1
;主程序
             ORG       0100H
MAIN:       MOV       SP,      #60H
             MOV       A,      #80H        ;设置80C51工作方式
             MOV       DPTR,  #P80C51
             MOVX     @DPTR,  A
             MOV       20H,     #00H        ;清报警标志单元
;清数据采集单元
             MOV       R0,     #00H
             MOV       R1,     #50H
             MOV       A,      #00H
             MOV       P2,     #0F0H
             CLEAR1:   MOVX   @R0,A
             INC        R0
;清显示及缓冲区
             MOV       A,       #00H       ;清显示缓冲单元
             MOV      CHADDR,  A
             MOV      COUNT,    A
             MOV       BUFF,     A
             MOV       TMOD,   #15H   ;设T0,T1工作方式
             MOV       TH1,    #3CH    ;装入T1时间常数
             MOV       TL1,     #0BH
             SETB       TR1
             MOV       TH0,     #00H   ;装入T0时间常数
             MOV       TL0,     #00H
             SETB       TR0
             SETB       ET0
             SETB       ET1
             SETB       EA                ;调用数据采样子程序
             LCALL     DESPLAY          ;调显示子程序
             LCALL     ALARM            ;输出报警指示灯
HERE:                 AJMP       HERE        
;主要子程序清单
;调用键盘子程序
START:        MOV       R0,   #0
                 MOV       R1,  #4
                 MOV       R2,  #FEH
SCAN:          MOV       A,   R2
                 MOV       P2,    A
;ROW0
                 JNB        P2.0, KEYIN
                 INC        R0
;ROW1
                 JNB        P2.1,KEYIN
                 INC  R0
;ROW2
                 JNB        P2.2,KEYIN
                 INC        R0
;NEXT COLUMN
                 MOV       A,    R2
                 RL         A
                 MOV       R2,   A
                 DJNZ       R1,   SCAN
                 JMP        START
KEYIN:        CALL       DEBOUNCE
                 MOV       A ,   R0
                 DA         A
                 MOV       P1,   A
                 JMP        STRAT
DEBOUNCE:    MOV       R7,  #40
D1:             MOV       R6,  #200
                 DJNZ       R6,  $
                 DJNZ       R7,   D1
                 RET  
                 END
;显示子程序
ORG         0300H
DESPLAY:    MOV       SCON,  #00H    ;设定串行工作模式为0
             MOV              R1,    #04H      ;数码管显示的位数4
             MOV            R0,   #00H       ;字型码首地址偏移量
             MOV       DPTR,  #TAB     ;字型码表首地址
LOOP:      MOV       A,    R0
             MOVC     A,   @A+DPTR    ;取出字型码
             MOV       SBUF, A          ;发送
WAIT:        JNB        TI,  WAIT        ;等待一帧发送完毕
             CLR        TI
              INC       R0                ;指向下一字型码
             ACALL     DL10              ;延时
             DJNZ       R1,  LOOP
ROUT2:   
             MOVX      A,  @DPTR      ;读入高8位
             MOV       P2, #0F0H
             MOVX     @R0,  A          ;存放高8位
             INC        DPTR              ;使A0=1
             INC        R0                ;求低4位存放地址
             MOVX     A,  @DPTR       ;读低4位
             MOVX     @R0, A           ;存放低4位
             MOV       A,    R0         ;求存放下一个通道数据地址
              ADD      A,  #09H
              MOV      R0,  A
              MOV      A,  CHADDR
              MOV     TH0, #3CH    ;重新装入定时器0时间常数
              MOV     TL0, #0B0H
              SETB     TR0
              RET
DL10:         MOV R7, #01H
BRANCH:     MOV      R0, BUFF    ;计数下一次采样地址
              INC       R0
              INC       R0
             AJMP       ROUT0
             ORG        0400H
;1.2.2 超速报警程序清单
;根据在图4-7中所示的报警电路部分所叙述的那样,可写出超速报警程序如下:
ALARM:             LCALL   TMAXCOMP        ;超速报警检查
               MOV     A,    20H        ;输出超速度报警信号模型
               CPL      A                 ;求正常信号模型
               MOV     DPTR,  #P80C51
               MOVX   @DPTR, A
         RET
;超速报警比较子程序
TMAXCOMP:   MOV     R0 , #TEMPMAX   ;取超速报警首地址
               MOV     R1,   #CDATA
               MOV     R3,    #08H
               MOV     R2,   #02H
COMP1:        MOVX    A,   @R1
               MOV     BUFF,  A
               MOVX    A,    @R0
                CJNE    A, BUFF,COMP2   ;判断上限报警值与采样
;高8位是否相等
              INC        R0                 ;求低8位数地址
              INC        R1
              DJNZ      R2,     COMP1
              SETB      SETTEMP           ;相等,置报警标志
COMP4:       MOV       A,     20H
              RL         A
              MOV       20H,    A         ;存入报警标志单元
              RET                           ;清报警标志位
COMP3:       CLR TEMPMAX
AJMP         COMP4
COMP2:       JNC    COMP3                 ;置报警标志位

相关帖子

沙发
zqjqq88| | 2013-4-13 13:39 | 只看该作者
貌似现在用汇编的越来越少了!会的人也不愿意一行行去读啊!

使用特权

评论回复
板凳
面包超人|  楼主 | 2013-4-13 13:42 | 只看该作者
zqjqq88 发表于 2013-4-13 13:39
貌似现在用汇编的越来越少了!会的人也不愿意一行行去读啊!

有什么建议给我吗?

使用特权

评论回复
地板
面包超人|  楼主 | 2013-4-13 13:44 | 只看该作者
zqjqq88 发表于 2013-4-13 13:39
貌似现在用汇编的越来越少了!会的人也不愿意一行行去读啊!

我给个电路图你能帮我用c写一个吗?

使用特权

评论回复
5
zhangyu198530| | 2013-4-13 13:44 | 只看该作者
换C吧,汇编的程序很少会有人趴电脑上帮你查程序的。

使用特权

评论回复
6
面包超人|  楼主 | 2013-4-13 13:46 | 只看该作者
zhangyu198530 发表于 2013-4-13 13:44
换C吧,汇编的程序很少会有人趴电脑上帮你查程序的。

恩恩,谢谢你

使用特权

评论回复
7
面包超人|  楼主 | 2013-4-13 13:49 | 只看该作者
zhangyu198530 发表于 2013-4-13 13:44
换C吧,汇编的程序很少会有人趴电脑上帮你查程序的。

我发个电路图给你,能帮我编一个c吗

使用特权

评论回复
8
zhangyu198530| | 2013-4-13 13:58 | 只看该作者
这个网上大把,大家都很忙呵呵。

使用特权

评论回复
9
xiaoyuan_ly| | 2013-4-13 16:13 | 只看该作者
都没有说什么问题了?!! int0,int1呢?!! 至少有个大概的情况说明了。。。。。。。。。。

使用特权

评论回复
10
z_no1| | 2013-4-13 17:06 | 只看该作者
写了一堆,你的目的是什么?问题是什么?
换你看到这个贴子,你知道那人要做什么事吗?
网上是什么都有,但进宝山空回的人非常多。
问问题要让人有兴趣回答才行,毕竟没人有义务回答你的问题。

使用特权

评论回复
11
菜鸟同学| | 2013-4-13 22:11 | 只看该作者
没看到 RETI

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

1

粉丝