Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 使用8086汇编语言与Arduino通信_Assembly_Arduino_Serial Port_Intel_Dosbox - Fatal编程技术网

Assembly 使用8086汇编语言与Arduino通信

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

在我的作业中,我需要使用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 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个数据位
但是这里缺少一条重要的指令!您仍然需要请求BIOS来实际执行此操作:



您应该初始化串行端口,然后再发送数据。您的意思是初始化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