新手213123 发表于 2015-4-21 20:30 
还有一个问题是,怎么估算程序运行的时间?谢谢
因为 UNO 和大部分板子用 16MHz clock,
这样就是 16 个machine clock 要 1 us,
通常 C 语言的一个句子大约 4 个指令 到 10 个machine clock
例如 byte x = 65; 这句要 2 个machine clock,
又如 unsigned long kk = 12345678; 这句要 8 个machine clock
(因为 long 占用 4 个 bytes);
函数调用大约 4 个 clock, 如果有参数要额外时间,
又如果函数返回要把 value 放入 variable 也要时间,
不过都只是多几个 clock,
但是调用 analogRead( ) 一次大约要 108 us ( 因为要等 A to D 完成!)
请注意, 108us 是很久喔!
Serial 传送虽然很慢, 但只要你没有把串口的缓存区用满,
可以当作它不花 CPU 的时间(因为每个 char 大约花 3 us),
但是, 一旦你会把串口的缓存区用满,,
那多出的 char 无法送入缓存区, CPU 必须用 while( ) 等待无法做其他事,
这时(假设波特率9600)等于 CPU 要等待 1.1 ms 才送出一个 char !!
请注意, 1 ms = 1024 us 喔 !
有了这些概念
就可以估算出大略时间
如果要比较准
可在前后各调用一次 micros( ) 相减查知 !
|