Assembly 使用8086汇编语言与Arduino通信
在我的作业中,我需要使用8086汇编语言与Arduino连接。当我运行汇编程序时,蜂鸣器将鸣响。我使用DOSBox运行汇编程序Assembly 使用8086汇编语言与Arduino通信,assembly,arduino,serial-port,intel,dosbox,Assembly,Arduino,Serial Port,Intel,Dosbox,在我的作业中,我需要使用8086汇编语言与Arduino连接。当我运行汇编程序时,蜂鸣器将鸣响。我使用DOSBox运行汇编程序 int buzzer = 11; int val; void setup() { pinMode(buzzer, OUTPUT); Serial.begin(9600); } void loop() { val = Serial.read(); if(-1 != val) { if('H' == val) { unsigned c
int buzzer = 11;
int val;
void setup() {
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
val = Serial.read();
if(-1 != val) {
if('H' == val) {
unsigned char i;
for(i = 0; i < 80; i++) {
digitalWrite(buzzer, HIGH);
delay(1);
digitalWrite(buzzer, LOW);
delay(1);
}
for(i = 0; i < 100; i++) {
digitalWrite(buzzer, HIGH);
delay(2);
digitalWrite(buzzer, LOW);
delay(2);
}
}
}
}
上面是我的汇编代码。当我运行汇编代码时,它应该向COM1发送“H”,蜂鸣器将鸣响。但是,当我运行汇编程序时,什么也没有发生。有什么问题
此代码试图设置COM1串行端口:
- 9600波特
- 奇偶校验
- 1停止位
- 8个数据位
您应该初始化串行端口,然后再发送数据。您的意思是初始化dosbox conf文件中的串行端口吗?在我更改dosbox-0.74.conf中的serial1=directserial realport:COM1之后,dosbox继续显示错误消息“serial1:Errors:Framing 0,奇偶校验0,溢出RX960(IF0:0),TX:0,Break 0”。
.MODEL SMALL
.STACK 64
.DATA
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AH,00
MOV AL,11101011b
MOV DX,00
MOV AH,1
MOV AL,'H'
MOV DX,00
INT 14H
MOV AX,4C00H
INT 21H
MAIN ENDP
END MAIN
MOV AH,00
MOV AL,11101011b
MOV DX,00
int 14h
MAIN PROC
xor dx, dx ; Select COM1
mov ah, 00h ; InitializeCommunicationsPort
mov al, 11101011b ; 9600, odd, 1, 8
int 14h
mov ah, 01h ; WriteCharacterToCommunicationsPort
mov al, 'H'
int 14h
test ah, ah
jns OK
... function failed with errorcode in bits 0-6 of AH
OK:
mov ax, 4C00h ; TerminateWithReturnCode
int 21h
MAIN ENDP
END MAIN