单片机实验汇编语言版全代码及实验现象总结

文章目录

  • 实验一.3路跑马灯进行二进制数展示
  • 实验二.8个LED轮流显示(p1口连接LED)
  • 实验三.8-3译码器的使用
  • 实验四.简单程序设计2
    • 分频实验
    • 加减运算实验
  • 实验五.中断系统实验(数码管共阳)
    • 10进制计数器
    • 8位数码管轮流显示固定数0
    • 8位数码管上稳定显示0-7(位选P2 段选P0)
  • 实验六.外部中断实验
    • 数码管显示中断源编号
    • 中断设计10进制计数器
  • 实验七.定时器实验
    • 定时器进行8个led灯轮流显示
  • 汇编常用指令总结
  • 汇编常用模块代码总结
    • 延时1s
    • 查表
    • 数码管显示表:

实验一.3路跑马灯进行二进制数展示

        ORG 0000H	;       指定地址                      0001--1LJMP MAIN	;       长转移                        0010--2ORG 0080H	;                                     0011--3
MAIN:	MOV P1,#0DBH	;11011011--零为亮                     0100--4ACALL DELay	;            短调用                   0101--5MOV P1,#06DH	;01101101                             0110--6ACALL DELay	;                                     0111--7MOV P1,#0B6H	;10110110                             1000--8ACALL DELay	;                                     1001--9AJMP MAIN	;                                     1010--A
delay:  mov r7,#255	;延时子程序  共1us                     1011--B
d1:	mov r6,#255     ;  255us                              1100--C
d2:	djnz r6,d2      ;255*255*2us                          1101--Ddjnz r7,d1      ;255*2us                              1110--Eret             ;子程序结束                            1111--Fend

实验二.8个LED轮流显示(p1口连接LED)

	ORG 0000H	;                                 12个时钟周期等于1个机器周期  12/时钟频率      LJMP MAIN	;                                  mov单周期,djnz双周期ORG 0080H	;                                  1-8:P1口 9:RST复位 10-17:P3口 18:XTAL2出 19:XTAL1片内时钟振荡器入
MAIN:	MOV P1,#0FEH	;11111110--零为亮                  20:VSS 21-28:P2口   29:PSEN 30:ALE/PROG 31:EA/VPP ACALL DELay	;                                  39-32:P0口  40:VCCMOV P1,#0FDH	;11111101                          1213:外部中断0/1  14,15:计时器0/1ACALL DELay	;MOV P1,#0FBH	;11111011ACALL DELay	;MOV P1,#0F7H	;11110111ACALL DELay	;MOV P1,#0EFH	;11101111ACALL DELay	;MOV P1,#0DFH	;11011111ACALL DELay	;MOV P1,#0BFH	;10111111ACALL DELay	;MOV P1,#07FH	;01111111ACALL DELay	;AJMP MAIN	;2kb内)无条件跳转
delay:  mov r7,#100	;延时子程序  1us
d1:	mov r6,#100     ;100us
d2:	  djnz r6,d2    ;100*100*2usdjnz r7,d1    ;100*2usretend

实验三.8-3译码器的使用

	ORG	0000HLJMP 	STARTORG	0080H
START:  ;MOV P1,#0FFH;   开关闭合,一开始开关都为高,选中哪位哪位给低MOV P0,#0FFH;      led全闭
MAIN:	MOV A,P1CPL A           ;取反CJNE A,#01H,NXET1;比较00000001不相等转移MOV P0,#0FEHLJMP MAIN
NXET1: CJNE A,#02H,NXET2;比较是否相等00000010MOV P0,#0FDHLJMP MAIN
NXET2:CJNE A,#04H,NXET3;00000100 MOV P0,#0FCHLJMP MAIN
NXET3:CJNE A,#08H,NXET4; 00001000MOV P0,#0FBHLJMP MAIN
NXET4: CJNE A,#010H,NXET5;00010000  16MOV P0,#0FAHLJMP MAIN
NXET5: CJNE A,#020H,NXET6; 00100000  32MOV P0,#0F9HLJMP MAIN
NXET6:CJNE A,#040H,NXET7;01000000    64MOV P0,#0F8HLJMP MAIN
NXET7:CJNE A,#080H,NXET     ;10000000  128MOV P0,#0F7H   ;00001000LJMP MAIN
NXET:	MOV P0,#0FFH;00000000LJMP MAINEND		

实验四.简单程序设计2

设计要求:
(1)选择函数发生器输出TTL信号输入单片机的某I/O口,经单片机分频后从另一I/O口输出,I/O分配自定,分频比范围1-10,要求分频比在程序中可进行设置;
(2)实现2位10进制有符号数(0-49)的加、减运算,按键K1选择加,按键K2选择或运算,LED指示运算结果。采用仿真器仿真运行,数据输入采用存储器直接置数,存储器分配自定。画出程序设计流程图,程序必须加以注释。

分频实验

分频 (P1.0主函数TTL输入 2khz 5v,P0.0输出)

    ORG 0000H	;                                                 N个周期2N个边沿 N个正边沿 N个负边沿LJMP MAIN	;ORG 0080H	;
MAIN:	MOV P1,#0FFH    ;11111111
LOOP1:  JB P1.0,LOOP1;检测下降沿,JB直接寻址位为一则转移否则顺延INC  A  	   ;检测到一个下降沿ACALL CHECK
LOOP2:   JNB	P1.0,LOOP2;检测上升沿JNB直接寻址位为0则转移否则顺延INC  A	   ;检测到一个上升沿ACALL CHECKAJMP LOOP1
CHECK: CJNE A,#02H,D1;检测到的周期个数与设定的分频系数比较,2分频,不相等转移CLR   A   ;进位标志位清0CPL P0.0    ;直接寻址位取反
D1:	 RETEND 

加减运算实验

加减运算,p1接led 从上到下 位数从低到高 开关p2.7左低减 右高加

    ORG 0000H                ------ADD,SUBB,JB,JNB,LJMP MAIN ORG 0080H
MAIN:MOV R2,#22H         ;参与加减的数可更改MOV R3,#05H         ;参与加减的数可更改MOV A,#31H          ;十进制的49
CHECK1:                     ;判断R2是否>49   acc.71则>49SUBB A,R2           ;带借位  A=A-R2-cyJNB Acc.7,CHECK2    ;0转 否则顺延LJMP LOOP1
CHECK2:                     ;判断R3是否>49  acc.71则>49SUBB A,R3           ;带借位  A=A-R3-cyJB Acc.7,LOOP1      ;1转 否则顺延
LOOP:JB P2.7,ADD1        ;P2.7为高电平,则作加运算,反之则作减运算LJMP SUBB1
ADD1:   MOV A,R2            ;加ADD A,R3CPL A               ;结果取反  led低电平亮MOV P1,ALJMP LOOP
SUBB1:   MOV A,R2          ;减SUBB A,R3           ;A=R2-R3JB Acc.7,SUBB2      ;R2>R3顺序 否则跳CPL AMOV P1,ALJMP LOOP
SUBB2:  MOV A,R3SUBB A,R2         ;r3-r2SETB Acc.7        ;直接置1CPL A             ;取反MOV P1,A  LJMP LOOPRET
LOOP1:MOV P1,#00H         ;如果参与运算的数大于49,则让所有的LED均亮RETEND

实验五.中断系统实验(数码管共阳)

10进制计数器

10进制计数器(0-9),间隔1秒(软件延时)自动加1,并将计数值显示在一位数码管上(P0连接一位数码管)

        ORG 0000H	;       LJMP MAIN	;
MAIN: 	MOV  P2,#0FEH            ;      11111110????这句不懂什么意思MOV  R1,#00MOV  DPTR,#0080H      ;   便于将表中数读出MOV   A,R1
LOOP1:  CJNE   A,#0AH,LOOP                   ; 比较数(1010)是否相等,不相等跳转MOV   R1,#00                         ; 此时A>10 重新赋0给AMOV   A,R1LOOP:	MOVC  A,@A+DPTR                      ;将表中读出的数赋给AMOV   P0,A                           ;在数码管显示ACALL DELay	                     ;调用延时子程序INC R1                               ;延时1s后,寄存器加一MOV   A,R1ACALL   LOOP1                         ;加一后进行比较
DElay:  	MOV R7,#10	             ;延时子程序约 0.996s   1us 12mhz
DEL1:	    	MOV R6,#200                  ;1us
DEL2:      	MOV R5,#248                  ;1usDJNZ     R5,$                ;248*200*10*2usDJNZ R6,DEL2                 ;200*10*2usDJNZ R7,DEL1                 ;10*2usRET    	
ORG 0080H	;   数码管显示表
DB      28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H;  0-9
END

8位数码管轮流显示固定数0

        ORG 0000H	;          ------延时,数码管LJMP MAIN	;ORG 0080H	;
MAIN:	MOV P0,#028H	;   数码管显示0 (可以改为其他数值)MOV P2,#0FEH;           11111110(第一个数码管亮)ACALL DELay	;      调用延时程序
LOOP:   MOV A,P2    ;           RL  A       ;           循环左移MOV   P2,A      ;ACALL DELay	; 调用子程序AJMP LOOP;
DElay:  MOV R7,#10	;延时子程序 约0.996s     1us
DEL1:	MOV R6,#200  ;1us
DEL2: 	MOV R5,#248; 1usDJNZ     R5,$;  248*200*10*2usDJNZ R6,DEL2;200*10*2usDJNZ R7,DEL1;10*2usRET
END

8位数码管上稳定显示0-7(位选P2 段选P0)

             	ORG    0000H     ;程序的初始位置LJMP   MAIN      ;跳到程序的起始位置ORG    0100H
MAIN:  	MOV    DPTR,#TABLE ; 将表文件头的地址赋给基址		MOV    R3,#00H     ;     将R3置0MOV    P2,#0FEH   ;     11111110
LOOP1: 	MOV	 A,#00HMOV    A,R3        ;     将R3置给AMOVC   A,@A+DPTR	  ;基址加变址查表内容赋给A	MOV	P0,#0FFHMOV    P0,A        ;将A给P0口INC    R3acall 	delayMOV    A,P2RL     A              ;循环左移MOV    P2,#0FFHMOV    P2,ACJNE   R3,#8,LOOP1;0-7都赋完值(8次)顺序执行 否则跳转AJMP   MAIN
DELAY:	MOV R7,#20	
DEL1:   	MOV R6,#50  
DEL2:		DJNZ R6,DEL2  DJNZ R7,DEL1 RET   
TABLE:  	DB   028H,07EH,0A2H,62H,74H,61H,21H,7AH   ;0-7END
(备用)ORG    0000H     ;程序的初始位置LJMP   MAIN      ;跳到程序的起始位置ORG    0100H
MAIN:  
MOV    P2,#0FEH   ;   
MOV    P0,#028H;  最左边一个显示0
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#0FDH   ;  
MOV    P0,#07EH;第二个显示1
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#0FBH   ;  
MOV    P0,#0A2H;第三个显示2
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#0F7H   ;  
MOV    P0,#062H;第四个显示3
ACALL DEALY
MOV    P0, #0FEH
MOV    P2,#0EFH   ;  
MOV    P0,#074H;第五个显示4
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#0DFH   ;  
MOV    P0,#61H;第六个显示5
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#0BFH   ;  
MOV    P0,#21H;第七个显示6
ACALL DEALY
MOV    P0, #0FFH
MOV    P2,#07FH   ;  
MOV    P0,#7AH;第八个显示7
ACALL DEALY
AJMP MAIN
DELAY:	MOV R7,#20	
DEL1:   MOV R6,#50  
DEL2:DJNZ R6,DEL2  DJNZ R7,DEL1 RET   END 

实验六.外部中断实验

数码管显示中断源编号

通过K01(JP37)产生外部中断请求(/INT0)信号,K02产生外部中断请求(/INT1)信号,在对应的中断服务程序实现在一位数码管上显示中断源编号(0或1)。
(按键K01接 P3.2 按键K02 接P3.3) 这里跳沿触发

    ORG 0000H                    -----外部中断0,外部中断1LJMP  MAINORG 0003H   ;外部中断口0的地址入口LJMP INT_0      ;长调用外部中断0ORG  0013H      ;外部中断口1的地址入口LJMP INT_1      ; 长调用外部中断1ORG 0080H
MAIN: MOV SP,#30H    ;堆栈指针  保护断点SETB EA  ;打开中断总开关SETB EX0  ;打开外部中断0SETB EX1  ;打开外部中断1SETB IT0   ; 跳沿触发SETB IT1   ; 跳沿触发SJMP $     ;跳转到本指令起始位置开始执行,即循环执行等待中断
INT_0: CLR EX0  ;保护过程,关外部中断0PUSH PSW  ;现场保护PUSH ACC  ; 压入数据进RAMSETB EX0  ;  打开外部中断0LCALL DELAY  ;调用延时10ms,去抖动  JB P3.2,RETURN1	;若K0为高电平则跳出  中断低有效MOV P0,#28H  ;否则数码管显示0
RETURN1: CLR EX0; 保护过程,关外部中断0POP ACC  ;现场恢复POP PSWSETB EX0RETI
INT_1:CLR EX1   ;关外部中断1PUSH PSW  ;现场保护PUSH ACCSETB EX1  ;     打开外部中断1LCALL DELAY  ;  调用延时10ms,去抖动JB P3.3,RETURN2  ;若K1为高电平则跳出MOV P0,#7EH  ;否则会数码管显示1
RETURN2: CLR EX1POP ACC  ;现场恢复POP PSWSETB EX1RETI  
DELAY:MOV R7,#100 ;延时子程序 约0.1s   0.5us   这时为24MHz
D1:   	MOV R6,#100;  0.5us
D2:   	DJNZ R6,D2;100*100*1DJNZ R7,D1;100*1RET	 END

中断设计10进制计数器

设计一个10进制计数器(0-9),选择一个按键(K01-K04任选)产生外部中断信号/INT0(或/INT1),每按一次计数器加1,并将计数值显示在一位数码管上
(按键接P3.2 P0数码管 ) 这里电平触发

    ORG    0000H  ;程序的初始位置            -------外部中断0LJMP   MAIN    ;跳到程序的起始位置ORG    0003H  ;外部中断程序0入口LJMP   INT       ;跳到中断程序的起始位置		ORG    0100H
MAIN:     CLR    IT0         ;采用低电平触发SETB   EX0         ;允许外部中断0中断SETB   EA          ;开启总中断MOV    R3,#00H     ;将R3置0MOV    DPTR,#TABLE ;将表文件头的地址赋给基址		
LOOP:     MOV    A,R3        ;将R3置给AMOVC   A,@A+DPTR	  ;基址加变址查表内容赋给A	MOV    P0,A        ;将A给P0口AJMP   LOOP
DELAY:  MOV R7,#25       ;延时程序
LOOP3:  MOV R6,#50       ;
LOOP2:  MOV R5,#50
LOOP1:  DJNZ R5,LOOP1DJNZ R6,LOOP2DJNZ R7,LOOP3RET 
INT:      ACALL  DELAY          ;中断程序  
LOOP4:    JNB    P3.2,LOOP4     ;去抖动INC    R3                 ;R3加一 CJNE   R3,#10,RETURN  ;若R3不为10则转移  ,相等则顺序执行置0     JNB直接寻址位为0则转移MOV    R3,#0          ;将R3置0                                   JB 直接寻址位为1则转移
RETURN: RETI                             
TABLE:  DB   028H,07EH,0A2H,62H,74H,61H,21H,7AH,20H,60HEND                  ;程序结束

实验七.定时器实验

定时器进行8个led灯轮流显示

     ORG   0000H; 程序入口LJMP  MAINORG   000BH; T0的中断入口LJMP  ITOP; 转T0中断处理子程序IT0PORG   0080H
MAIN:     MOV P0,#7FH       ; 先亮第一盏灯   01111111MOV A,P0MOV SP,#60H   ; 保护断点MOV B,#14H    ; 一次定时50ms,一共循环20次MOV TMOD,#01H ; 采用定时器T0,方式1MOV TL0,#0B0H ; 给T0设初值1553612Mhz 50ms)MOV TH0,#3CH  ;SETB ET0;允许T0中断SETB EA;总中断允许SETB TR0;启动T0计数
HERE:     SJMP HERE
ITOP:     MOV TL0,#0B0H;进入T0中断服务子程序,给T0重新装入初值MOV TH0,#3CH ;DJNZ B,RETURN;B为中断次数计数器,B减10则中断返回CLR TR0      ;1s定时时间到,停止T0工作MOV R3,#01H  ;1s定时完成时,就将R3值设为01H,作为标志RR A         ; A右移MOV P0,AMOV B,#14H  ;定时50ms,一共循环20次SETB TR0;重新启动T0计数
RETURN:  RETIEND

(拓展部分)时间间隔0.5~2秒可调,时间步进为0.2秒,采用按键(K01
~K04任选一个)产生外部中断信号,作为时间间隔选择输入,中断服务程序调
整时间间隔。(P1接led 按键接P3.2) -----外部中断0,定时器T0

        ORG  0000H
RESET:  LJMP MAINORG  0003H;外部中断0入口LJMP INTORG  000BH; 定时器/计数器T0中断入口LJMP IT0PORG  0100H
MAIN: MOV  SP,#60HMOV  R4,#10   ;MOV  R3,#10   ;MOV  P1,#0FEH  ;          11111110点亮一个ledMOV  TMOD,#01H	;T0为方式1定时MOV  TL0,#0B0H    ; 10110000   初值15536MOV  TH0,#3CH    ;  00111100 CLR    IT0             ;电平触发SETB   EX0         ;允许外部中断0中断SETB  ET0          ;允许T0中断SETB  EA           ;总中断允许SETB  TR0        ; 启动T0计数SETB  PX0        ;外部中断0优先级CLR   PT0         ;定时器/计数器T0优先级 置0
HERE:   SJMP  HERE
IT0P:   MOV   TL0,#0B0H     ;T0中断程序 初值1553612Mhz 50ms)MOV   TH0,#3CH    ;一次50ms 共十次 即间隔0.5s(可改)移位ledDJNZ  R4,RETURN  ;  R4=10减一不为0转移MOV  B,R3  ;  MOV  R4,B            ;R4=10MOV  A,P1RL   A      ;循环左移MOV  P1,A
RETURN: RETI
DELAY:  MOV R7,#25       ;延时程序 (12MHz 延时约0.1s)
D1:     MOV R6,#200     ;DJNZ R6,$      ;200*25*2usDJNZ R7,D1    ;25*2usRET
INT:   ACALL  DELAY           ;外部中断0程序   延时约0.1s
LOOP4: JNB    P3.2,LOOP4   ;  为低电平跳出ACALL  DELAY          ;再延时约0.1s 共0.2s
LOOP5: JNB    P3.2,LOOP5     ;去抖动INC R3       INC R3INC R3INC R3CJNE   R3,#42,RETURN1  ;42-10=32 32/4=8 判断是否循环了八个led)/*改为:INC R3  CJNE R3,#18,RETURN1;*/MOV    R3,#10
RETURN1: RETI
END

(方式2:8位自动重装 led轮流显示)(P0接led) —方式2 定时器T0

        ORG   0000H;程序入口LJMP  MAINORG   000BH;T0的中断入口LJMP  ITOP; 转T0中断处理子程序IT0PORG   0080H
MAIN: MOV P0,#7FH; 先亮第一盏灯MOV A,P0MOV SP,#60HMOV B,#50H      ; 一次定时250μs,一共循环50*80次  共1sMOV TMOD,#02H   ;   采用定时器T0,方式2MOV TL0,#06H    ;初值为612MHz 下 250us 初值计算公式)MOV TH0,#06H;SETB ET0;    允许T0中断SETB EA;     总中断允许SETB TR0;启动T0计数
HERE:   SJMP HERE
ITOP:  DJNZ B,RETURN;B为中断次数计数器,B减10则中断返回(循环80次)MOV  B,#50HINC   R4CJNE R4,#32H,RETURN   ;将R4与50比较 (循环50次) RR A       ;          A右移MOV  P0,AMOV  B,#50H   ;开始新一轮MOV  R4,#00H  ;(寄存器R4一开始为0否?)
RETURN:  RETIEND

P0.0输出频率为1KHz的矩形波信号(方式1)T=1ms 500Us半周期

    ORG 0000H          ----定时器T0LJMP MAINORG 000BH	;T0的中断入口LJMP IT0PORG 0080H;    主程序入口
MAIN: MOV SP,#60HMOV TMOD,#01H  ;设置T0在方式1定时MOV TH0,#0FEH; 设初始值65036  500us(12Mhz)MOV TL0,#0CH  	SETB EA  ;总中断允许SETB ET0;允许T0中断SETB TR0  ;启动T0	
HERE: SJMP HERE
IT0P: MOV TL0,#0CH  ;进入T0中断服务子程序,给T0重新装入初始值MOV TH0,#0FEHCPL P0.0   ;反转RETI 
END

(方式2)P0.0输出频率为1KHz的矩形波信号 精确----定时器T0

         ORG 0000HLJMP MAINORG 000BH;T0的中断入口LJMP IT0PORG 0080H
MAIN:  MOV SP,#60HMOV B,#5  ;循环次数为5次MOV TMOD,#02H  ;T0在方式2定时MOV TL0,#156     ;设初始值 100usMOV TH0,#156SETB EA          ;打开中断开关SETB ET0        ;允许T0中断SETB TR0        ;启动T0SETB P0.0
HERE:  SJMP HERE
IT0P:   DJNZ B,RETURNMOV  B,#5CPL  P0.0
RETURN:RETIEND

//低电平亮
//脉冲信号测量:被测信号频率范围为1~10KHz,采用定时/计数器实时检测信号频率,测试结果可观察 (P2位选 P0 段选)信号发生器接p3.5 t1计数

#include <reg52.h>
int Show_Num[5] = {0};
int counter = 0;
char Led[10] = {0X28,0X7E,0XA2,0X62,0X74,0X61,0X21,0X7A,0X20,0X60};  0-9 共阳void Time_Start(void)
{  TMOD = 0X51; // T0方式1 定时计数, T1方式1计数  定时1s时 20次50ms ET0 = 1;  //打开T0中断ET1 = 1;  打开T1中断TH0 = 0X3C;  设置定时器/计数器0的初始值。(65536-50000/256=60TL0 = 0XAF; (65536-50000%256)=176 )TH1 = TL1 = 0;设置定时器/计数器1的初始值TR0 = 1;  定时器0运行控制位TR1 = 1; 定时器1运行控制位}
void delayms(int a)    ;延时程序
{     int z;for( a=12; a > 0; a--){          for( z = 121; z>0; z--)}}
void Show_Led_7(unsigned int k)//75693
{       //通过七段数码管显示频率,该子函数经软件仿真,无问题Show_Num[0] = k % 10;Show_Num[1] = (k % 100 )/10;Show_Num[2] = (k % 1000 )/100;Show_Num[3] = (k % 10000 )/1000;Show_Num[4] = k / 10000;P2 = 0XFE; P0 = Led[Show_Num[4]]; delayms(1);	//高位 P2 = 0XFD; P0 = Led[Show_Num[3]]; delayms(1);	P2 = 0XFB; P0 = Led[Show_Num[2]]; delayms(1);P2 = 0XF7; P0 = Led[Show_Num[1]]; delayms(1);P2 = 0XEF; P0 = Led[Show_Num[0]]; delayms(1);
}void main(void)
{         int F_TH = 0,F_TL = 0;  能否把以下F_TH直接换成TH1, F_TL换成TL1unsigned int Frequency ;Time_Start();EA = 1;  开总中断while(1){       if(counter >= 20 ){TR1 = 0;TR0 = 0;F_TH = TH1;F_TL = TL1;counter = 0;TH1 = TL1 = 0;TR1 = 1;TR0 = 1;Frequency = (int) (F_TH * 256 + F_TL);}Show_Led_7(Frequency); }}
void Time_interrupt0() interrupt 1  //外部中断0程序
{//TR1 = 1;TH0 = 0X3C;   1s到了 再赋初值  TL0 = 0XAF;counter++;    计满了65536一次
}
/*void Time_interrupt1() interrupt 3     ; 外部中断1程序   可删
{       //报错P1 = 0X10; P0 = 0XA1;   //输出ERROR}*/

汇编常用指令总结

XCH 交换 XCHD交换低半字节
SWAP 累加器高低半字节交换
SUBB (带借位)减 
INC  加一 DEC 减一
MUL AB  结果为BA(B高A低)
DIV AB  (A商B余)
DA  A 十进制调整
ANL 与
ORL 或
XRL 异或
CLR 清0
CPL 求反
RL 循环左移 RR循环右移
JZ 为0转移  JNZ 非0转移 
CJNE 比较不相等转移 
DJNZ 减一不为0转移

汇编常用模块代码总结

延时1s

DElay:  	MOV R7,#10	 ;延时子程序约 0.996s   1us
DEL1:	    	MOV R6,#200  ;1us
DEL2:      	MOV R5,#248  ;1usDJNZ     R5,$   ;248*200*10*2usDJNZ R6,DEL2  ;200*10*2usDJNZ R7,DEL1  ;10*2usRET  

查表

MOV    DPTR,#TABLE
MOVC   A,@A+DPTR
MOVC A,@A+DPTR  或MOVC A,@A+PC

数码管显示表:

DB      28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H;  0-9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS Code配置C语言环境

首先安装一个C语言的编译器&#xff0c;然后将其位置添加到系统环境变量中。&#xff08;之后需要重启一下vs,才能检测到编译器&#xff09; 打开vscode下载4个插件&#xff1a; C/C Extension PackCode RunnerInclude AutocompleteCMake Tools 然后打开设置把三个选项勾上。…

cad x命令炸开图纸怎么恢复?

cad x命令炸开图纸怎么恢复&#xff1f;cad图纸使用x命令炸开后&#xff0c;想要组合在一起&#xff0c;该怎么操作呢&#xff1f;下面我们就来看看cad炸开命令的详细使用教程 今天我们主要解决在cad中用x炸开后恢复的问题&#xff0c;当然附带一些基础知识也一起普及一下。 …

Python中实现消息队列:构建高效异步通信系统的完整指南

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 消息队列的基础概念 在开始之前&#xff0c;先了解一些消息队列的基础概念。 1 什么是消息队列&#xff1f; 消息队列是一种通信方式&#xff0c;它允许将消息从一个应用程序传递到另一个应用程序。消息队列提…

目标检测入门体验,技术选型,加载数据集、构建机器学习模型、训练并评估

Hi, I’m Shendi 1、目标检测入门体验&#xff0c;技术选型&#xff0c;加载数据集、构建机器学习模型、训练并评估 在最近有了个物体识别的需求&#xff0c;于是开始学习 在一番比较与询问后&#xff0c;最终选择 TensorFlow。 对于编程语言&#xff0c;我比较偏向Java或nod…

多切片联合构建3D生物空间图谱

空间转录组&#xff08;ST&#xff0c;Spatial transcriptomics&#xff09;技术正在革新探索组织空间结构的方式。目前&#xff0c;ST数据分析通常仅限于单个2D组织切片&#xff0c;限制了我们理解3D空间中发生的生物过程。在这里&#xff0c;作者提出了STitch3D&#xff0c;一…

SpringIOC之LocaleContext

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

Sublime Text 3配置 C# 开发环境

Sublime Text 3配置 C# 开发环境 一、引言二、主要内容1. 初识 Sublime Text 32. 初识 C#3. 接入 .NET Framework3.1 下载 .NET Framework3.2 环境变量配置 4. 配置 C# 开发环境5. 编写 C# 代码6. 运行 C# 代码 三、总结 一、引言 C# 是一种面向对象的编程语言&#xff0c;由微…

100GPTS计划-AI文章扩展ContentExpander

地址 https://chat.openai.com/g/g-jPr6gWUI9-content-expander https://poe.com/ContentExpander 测试 微调 内容扩展器专门用于扩展小说相关文本 上下文微调 保证小说基本风格

【收藏】法律人办案必备检索网站最新汇总!附检索技巧

为什么要进行法律检索?无论你擅长的是做诉讼还是非诉讼业务,法律检索都是必备技能之一。只有做好法律检索才能制定出更加完备的策略报告,才能提供更加充实、可行、准确的方案。 一、数据库检索 1、alpha数据库 https://www.icourt.cc 已经用了3年的大数据库,听说最近降价了…

Unreal5.3 PCG 笔记

目录 ElectricDreams场景功能移动中间山体向周围随机生成倒下的树干树干上随机生成的植被 ElectricDreams场景功能 移动中间山体向周围随机生成倒下的树干 配置内容 中心山体Spline周围沟渠Spline&#xff08;土堆&#xff09;PCG规则 主要功能节点 SplineSample&#xff08;…

大创项目推荐 深度学习+opencv+python实现车道线检测 - 自动驾驶

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV56 数据集处理7 模型训练8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &am…

【IT AI Termiology】

IT termiology I) Database1.1) IDC : Internet Data Center II) Script Linux , powershell, etcIII) Program / Code, JSIV) AI, depth learning, micro circuit, chips, etcNVIDIA I) Database 1.1) IDC : Internet Data Center 互联网数据中心&#xff08;Internet Data …

只知道短视频和直播带货?抖店好像更适合我们普通人哦!项目介绍

我是王路飞。 说道带货&#xff0c;大多数人还是只知道抖音短视频和抖音直播带货。 毕竟&#xff0c;现在众多平台都在往电商方向发展&#xff0c;做电商的方式就是通过短视频和直播的形式带货。 但是&#xff0c;很明显不是所有人都能去做的&#xff0c;尤其是对我们这些普…

亚马逊品牌分析ABA功能有哪些?亚马逊选品的量化标准有哪些?——站斧浏览器

亚马逊品牌分析ABA功能有哪些&#xff1f; 1、品牌市场份额&#xff08;Share of Voice&#xff09; ABA提供了品牌在特定类别中市场份额的详细数据。这一模块帮助品牌所有者准确评估其品牌在整个市场中的竞争地位和表现。通过了解市场份额&#xff0c;品牌方可以制定更具针对…

GEOPHYSICS 投稿须知

2018 年 1 月生效的 GEOPHYSICS 文章撰写和格式化指南已修订&#xff0c;并包括支持双重匿名评审的新要求。 一、范围和编辑政策 数据和材料可用性&#xff1a;在投稿过程中&#xff0c;作者被要求说明是否有重现论文中报告的结果所需的数据。 与本研究相关的数据可用&#x…

Midjourney V6版本强势来袭,挑战像素极限!

最新的Midjourney V6模型带来了一系列强大的功能和改进&#xff0c;以下是一些关键特性的总结&#xff1a; AI提示词&#xff08;第33辑&#xff09;Midjourney V6版本强势来袭&#xff0c;挑战像素极限&#xff01;-喜好儿aigc 目前测试已发现&#xff1a; 提示词长度已增至…

类和对象(下篇)

再谈构造函数 构造函数体赋值 在之前的学习中我们知道&#xff0c;在创建一个对象时&#xff0c;我们的编译器就会自动调用构造函数将对象初始化&#xff0c;给对象中各个成员变量一个合适的初始值。 例如&#xff1a; class Date { public:Date(int year, int month, int d…

从零开始创建GPTs 人人都可以编写自己的ChatGPT产品

在这个人工智能迅猛发展的时代&#xff0c;GPT&#xff08;生成式预训练变换器&#xff09;已经成为一项令人兴奋的技术&#xff0c;它打开了创意和知识的新大门。无论你是一名编程新手、一位热爱探索的学生&#xff0c;还是对未来充满好奇的专业人士&#xff0c;GPTs都可以为你…

盘点2023年度安防监控行业发展:安防监控技术取得哪些进展?

随着科技的不断发展&#xff0c;安防监控行业也在迅速进步。在今年一年中&#xff0c;安防监控行业的发展也取得了长足的进步。随着2023年渐近尾声&#xff0c;本文将对2023年安防监控行业的发展进行一个盘点和简单的剖析。 1&#xff09;高清监控设备的发展越来越受到重视 随…

vue事件修饰符

在事件处理函数中调用event.preventDefault()或event.stopPropagation()是非常常见的需求。因此&#xff0c;vue提供了事件修饰符的概念&#xff0c;来辅助程序员更方便的对事件的触发就行控制&#xff0c;常用的5个事件修饰符如下&#xff1a; .prevent格式: .stop格式&#x…