我是阿迪诺的乞丐。我是学生,这是我第一次做作业。
有谁能给我解释一下怎么理解以下密码吗?哪个密码更好?操作人员如何影响执行速度?下面是内容。
“任务是根据所使用的编程技术来测量代码执行的速度。程序代码被设计成在不输入延迟的情况下分别向D10 (PB2)端口暴露高、低状态,从而得到了给定记录方法的最大频率的矩形波形。程序是通过将所有语句放置在void ()中编写的,省略了void循环()。演习的准备工作包括将Arduino Uno板连接到USB端口,启动Arduino IDE环境并打开示波器。用示波器观察D10引脚(PB2)产生的矩形波形,并测量其频率。
第一个程序的代码:
const byte outPin = 10;
void setup() {
pinMode(outPin,OUTPUT);
while (1)
{
digitalWrite(outPin, HIGH);
digitalWrite(outPin, LOW);
}第二个程序的代码:
const byte outPin = B00000100;
void setup() {
DDRB | = outPin;
while (1)
{
PORTB = B00000100;
PORTB = B11111011;
}第三个程序代码:
const byte outPin =10;
byte state =0;
void setup() {
pinMode(outPin,OUTPUT);
while (1)
{
digitalWrite(outPin, state);
state = !state;
}第四个程序的代码:
#define _BV(n) (1<<n)
const byte outPin= B00000100;
byte state = _BV(2);
void setup()
{
DDRB|=outPin;
}
while (1){
PORTB |=state;
PORTB &=~state;
}第五个程序的代码:
const byte outPin= B00000100;
void setup()
{
DDRB|=outPin;
while (1){
PORTB |=B00000100;
PORTB &=B11111011;}
}就像我说的,我是阿迪诺的乞丐。我找不到任何办法来解释我的家庭作业。
发布于 2022-11-02 12:31:23
哪个代码更好?
当然是第一个。原因:
运营商如何影响执行速度?
这是对digitalWrite的调用,而不是像~这样的一些操作符。您应该寻找与digitalWrite类似的与硬件无关的替代品,后者在编译时只完成一次Arduino引脚号和硬件寄存器之间的转换。
顺便说一句:你的问题不在这里讨论的话题:)
https://stackoverflow.com/questions/74269046
复制相似问题