求用汇编语言编写单片机程序
发布网友
发布时间:2022-04-21 19:20
我来回答
共5个回答
热心网友
时间:2023-07-07 20:10
^_^,这个可以用两个
红外对管
来实现,进去的时候1,2依次得到
低电平
,寄存器加1;有人出来的时候2,1依次得到低电平,寄存器减1
当寄存器等于0的时候,灯灭,不等于0的时候灯亮
^_^
程序很简单
就是怕学生会故意捣鬼,要是有一个人背着另一个走出去,灯就不会灭了
^_^
热心网友
时间:2023-07-07 20:10
按照你这个定义可以这样理解:
三个字节代表一个音符,前两个字节表示其音高(频率),后一个字节表示其音长。频率的值是定时器的初值,第一个为th,第二个为tl。音长决定延时长短,可以用延时子程序来做,也可以用定时器来控制。
热心网友
时间:2023-07-07 20:10
程序未验证,R5放大于0的个数,R6放等于0的个数,R7放小于0的个数
假定有符号数的高位1为负数,0为正数,00H表示0
MOV DPTR,#2000H
MOV R0,1FH
MOV R5,#0
MOV R6,#0
MOV R7,#0
LOOP:MOVX A,@DPTR
JNZ ACC.7,ZSHU0 ;ACC.7=0转正数
INC R7 ;ACC.7=1则R7+1
SJMP EXIT
ZSHU0:CJNE A,#00H,ZSHU
INC R6 ;等于零R6+1
SJMP EXIT
ZSHU:INC R5 ;ACC.7=0且A不等于00H,则R5+1
EXIT:DJNZ R0,LOOP ;没判断完毕,则循环
MOV ONE,R5
MOV TWO,R6
MOV THREE,R7
NOP
热心网友
时间:2023-07-07 20:11
ProetUS 仿真调试通过!
要ProteUS文件的话留言
c_ONE EQU 30H
c_TWO EQU 31H
c_THREE EQU 32H
ORG 0000H
AJMP _INIT_SYS
_INIT_SYS:
MOV SP,#80H
_MAIN:
MOV DPTR,#2000H
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#060H
MOVX @DPTR,A
MOV 1FH,#100 ;100 NUMBERS TO COUNT
LCALL _COUNT
AJMP $
_COUNT:
PUSH 0
MOV c_ONE,#0
MOV c_TWO,#0
MOV c_THREE,#0
MOV R0,01FH
MOV DPTR,#2000H
_COUNT_LOOP:
MOVX A,@DPTR
JZ _C_ZERO
ANL A,#80H
JZ _C_ONE
_C_THREE:
INC c_THREE
AJMP _C_END_TEST
_C_ZERO:
INC c_TWO
AJMP _C_END_TEST
_C_ONE:
INC c_ONE
_C_END_TEST:
INC DPTR
DJNZ R0, _COUNT_LOOP
POP 0
RET
; 外部RAM 2000h单元开始存放一组有符号数,其数目已存在1FH单元。
; 要求统计出其中大于0,等于0和小于0的数的数目。并将统计结果分别存放在
; 内部ONE,TWO,THREE三个单元中。
END
热心网友
时间:2023-07-07 20:12
先跟楼主通个话。我只会用Intel 8086/8088指令编程,题目所说:用汇编语言编写单片机程序,我没搞明白。是用Intel 8086/8088指令编程,还是用单片机汇编指令编程?若是前者,我没有问题;若是后者,我则放弃。请明示。