Chap2汇编语言程序设计.pptxVIP

  • 1
  • 0
  • 约3.62千字
  • 约 35页
  • 2019-10-26 发布于湖北
  • 举报
单片机及C51编程技术;;汇编语言的基本知识 ;汇编程序伪指令;功能:将一个数据或特定的汇编符号赋予规定 的字符名称。;⒋ 数据地址赋值伪指令 DATA;格式:字符名称 BIT 位地址;汇编语言基本概念;⑷ 调试;汇编程序设计流程;简单程序(顺序结构);CONT: MOV A,R0 ;读低8位 CPL A ;取反 ADD A,#1 ;加1 MOV R2,A ;存低8位 MOV A,R1 ;读高8位 CPL A ;取反 ADDC A,#80H ;加进位及符号位 MOV R3,A ;存高8位 RET ;;分支程序;正确运用转移指令;① S0单独按下, 红灯亮,其余灯灭; ② S1单独按下, 绿灯亮,其余灯灭; ③ 其余情况, 黄灯亮。;解:程序如下 SGNL:ANL P1,;红绿黄灯灭 ORL P1,;置P1.0、P1.1输入态, P1.5~P1.7状态不变 SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判SL1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮 YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环 SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮 GREN:SETB P1.3 ;绿灯亮 CLR P1.2 ;红灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 ;循环程序;循环程序流程图;【例】设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,数据长度(个数)N存在R2中,试编程求和S=X1+X2+‥‥+XN,并将S(双字节)存放在R3R4中,(设S<65536)。;【例】编写延时10ms子程序,fosc=12MHz。 解:fosc=12MHz,一个机器周期为1?s。 DY10ms:MOV R6,#20 ; 置外循环次数 DLP1: MOV R7,#250 ; 置内循环次数 DLP2: DJNZ R7,DLP2 ; 2机周×250 =500机周 DJNZ R6,DLP1 ; 500机周×20= 10000机周 RET ; 说明:MOV Rn指令为1个机器周期; DJNZ指令为2个机器周期; RET指令为2个机器周期; {[(2机周×250)+1+2]×20+1+2}×1?s/机周=10063?s≈10ms;2014-9-6; 设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如下图所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实现:???个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。 ;FLASH:MOV A,#01H ;置灯亮初值 FSH0: MOV R2,#0AH ;置闪烁次数 FLOP: MOV P1,A ;点亮 LCALL DY1s ;延时1s MOV P1,#00H ;熄灭 LCALL DY1s ;延时1s DJNZ R2,FLOP ;闪烁10次 RL A ;左移一位 SJMP FSH0 ;循环 RET ; 【课堂练习题】 根据上图电路,设计灯亮移位程序,要求8只发光二极管每次点亮一个,点亮时间为250ms,顺序是从下到上一个一个地循环点亮。设fosc=6MHz。;查表程序 ;查表指令;解:编程如下: TEST: MOV DPTR,#TAB ;置平方表首址 MOV A,30H ;读数据序号 MOVC A, @A+DPTR;读对应平方数据 MOV 31H,A ;存平方数据 RET ; TAB: DB 0,1,4,

文档评论(0)

1亿VIP精品文档

相关文档