Started following some tutorial on att85 usi. Downloaded example code from make avr book.
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
|
||||
#include "support.h"
|
||||
|
||||
void printMilliseconds(uint16_t value) {
|
||||
/* Given a value in milliseconds, prints out how many seconds
|
||||
you took over the serial port. Does ascii conversion, prints
|
||||
decimal point, and drops extra leading zeros.
|
||||
*/
|
||||
uint8_t digit;
|
||||
|
||||
printString("\r\nYou took ");
|
||||
/* add up ten-thousands */
|
||||
digit = 0;
|
||||
while (value >= 10000) {
|
||||
digit++;
|
||||
value -= 10000;
|
||||
}
|
||||
if (digit) {
|
||||
transmitByte('0' + digit);
|
||||
}
|
||||
/* add up thousands */
|
||||
digit = 0;
|
||||
while (value >= 1000) {
|
||||
digit++;
|
||||
value -= 1000;
|
||||
}
|
||||
transmitByte('0' + digit);
|
||||
|
||||
/* decimal point here b/c dividing by 1000 */
|
||||
transmitByte('.');
|
||||
|
||||
/* add up hundreds */
|
||||
digit = 0;
|
||||
while (value >= 100) {
|
||||
digit++;
|
||||
value -= 100;
|
||||
}
|
||||
transmitByte('0' + digit);
|
||||
/* add up tens */
|
||||
digit = 0;
|
||||
while (value >= 10) {
|
||||
digit++;
|
||||
value -= 10;
|
||||
}
|
||||
transmitByte('0' + digit);
|
||||
|
||||
// Ones digit is easy.
|
||||
transmitByte('0' + value);
|
||||
|
||||
printString(" seconds.\r\n");
|
||||
}
|
||||
|
||||
void printComments(uint16_t value) {
|
||||
/* Given a value in milliseconds, rates your reaction time */
|
||||
if (value > 2000) {
|
||||
printString("----> Ummm...this is a reaction timer...\r\n");
|
||||
}
|
||||
else if (value > 1000) {
|
||||
printString("----> Hello?\r\n");
|
||||
}
|
||||
else if (value > 500) {
|
||||
printString("----> Slow.\r\n");
|
||||
}
|
||||
else if (value > 250) {
|
||||
printString("----> Have another cup of coffee.\r\n");
|
||||
}
|
||||
else if (value > 200) {
|
||||
printString("----> Respectable.\r\n");
|
||||
}
|
||||
else if (value >= 150) {
|
||||
printString("----> Fast.\r\n");
|
||||
}
|
||||
else if (value < 150) {
|
||||
printString("----> Amazing!\r\n");
|
||||
}
|
||||
}
|
||||
|
||||
void randomDelay(void) {
|
||||
/* Waits for a "random" delay from 1 - 3.5 sec */
|
||||
/* Requires timer 1 initialized and running */
|
||||
/* It's not really random, but very hard to control --
|
||||
like coin-flipping. */
|
||||
uint8_t randomTime;
|
||||
|
||||
_delay_ms(1000); /* wait at least 1 sec */
|
||||
randomTime = (uint8_t) TCNT1;
|
||||
/* type-casting the 16-bit TCNT1 as an 8-bit number keeps
|
||||
only the 8 least-significant (fastest-changing) bits */
|
||||
while (--randomTime) {
|
||||
_delay_ms(10); /* max value is 255 ~= 2.5 sec */
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user