微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 汇编p1口输出双窄脉冲的程序哪里错

汇编p1口输出双窄脉冲的程序哪里错

时间:10-02 整理:3721RD 点击:
          ORG      0000H                    ;程序入口
          MOV      B,#05H                   ;设置循环次数为5次
          MOV      DPTR,#TAB                ;将表首地址送入DPTR中
RESET:    AJMP     MAIN                     ;转入主程序
          ORG      000BH                    ;T0中断入口
          AJMP     IT0P0                    ;转T0中断处理程序
          ORG      001BH                    ;T1中断入口
          AJMP     IT0P1                    ;转T1中断处理程序
          ORG      0100H                    ;主程序入口
MAIN:     MOV      SP,#60H                  ;设置堆栈指针
          MOV      TMOD ,#01H               ;设置T0为方式1定时
          MOV      TMOD ,#10H               ;设置T1为方式1定时
          ACALL    PT0M0                    ;调用初始化子程序PT0M0
HERE:     AJMP     HERE                     ;原地循环等待中断,模拟一段主程序
PT0M0:    MOV      P1,#00H                  ;P1口输出低电平
          MOV      TL0,#7DH                 ;T0初始化子程序,装入计数初值的低8位
          MOV      TH0,#0F9H                ;装入计数初值的高8位
          SETB     ET0                      ;允许T0中断
          SETB     EA                       ;总中断允许
          SETB     TR0                      ;启动T0
          RET
IT0P0:    MOV      A,#00H     ;将A寄存器清零
          MOVC     A,@A+DPTR                ;查表结果送入A
    MOV      P1,A      ;将A中的数据传送到P1
          MOV      TL1,#7DH                 ;T1初始化子程序,装入计数初值的低8位
          MOV      TH1,#0F9H                ;装入计数初值的高8位
          SETB     ET1                      ;允许T1中断
          SETB     EA                       ;允许总中断
          SETB     TR1                      ;启动T1
          RET
IT0P1:    INC      DPTR
          DJNZ     B,PT0M0                  ;B减1不为0则跳转到PT0M0
TAB:      DB       21H,03H,06H,0CH,18H,30H
END

主函数中给TMOD赋值语句是不是有问题啊。第二次赋值是不是把第一次的赋值给覆盖了啊。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top