안녕하세요, 저는 Arduino를 처음 사용하고 있습니다. 1 초 지연을 만들려고하는데, delay_ms 함수를 완성하는 코드를 어떻게 생성 할 수 있는지 알지 못합니다. 그것을 해결하기 위해 시도했지만 더 나은 당신이 그냥 줄 가 {1 초 지연을 만드는 방법 Arduino
word millisecs;
Serial.begin(9600);
}
void setup() asm volatile(
" ldi r16,0x3F ; r16 = 00111111\n"
" out 4,r16 ; set pins 8-13 as outputs in DDRB\n"
::: "r16");
millisecs = 1000; // 1s blink delay
Serial.begin(9600);
}
void loop()
{
long starttime = millis(); // make a note of the start time
asm volatile(
// jump to "blink" - ie jump around the delay_ms subroutine
" rjmp blink%= ; relative jump to 'blink' \n"
" ldi r16,0x3F ; r16 = 00111111\n"
" out 4,r16 ; set pins 8-13 as outputs in DDRB\n"
::: "r16");
registers used:
r31 - millisecond count (lo byte)
r30 - millisecond count (hi byte)
r17 - 100 microsecond count
r16 - 1 microsecond count
Overall delay (ms) = r30:r31 * r17 * r16
---------------------------------------------------------------------*/
"delay_ms%=: nop ; code to replace nop \n"
"delay_100us%=: nop ; code to replace nop \n"
"delay_1us%=: nop ; code to replace nop \n"
" sbiw r30,1 ; decrement ms count (r31:r30)\n"
" brne delay_ms%= ; loop to delay_ms while > 0 \n"
" ret ; return from subroutine \n"
네,하지만 내장을 사용하지 않고 그것을 완성하고 싶습니다. 어떻게 delay_ms % delay_100us %와 delay_1us % 함수를 완료 할 지 알아야합니다. 고맙습니다. – user3669884