Using IAR develop a program to display a timer using the 7 segment displays. The
ID: 3801771 • Letter: U
Question
Using IAR develop a program to display a timer using the 7 segment displays. The counter must be able to count up to 59 minutes and 59 seconds and must be displayed in the following format: 59:59 (using the colon). Use software delay loops to approximate one second delays. Use the switches S2 and S3 on the development board for input. S2 must be used to start the timer while S3 must be used stop the timer on the first press and reset the timer back to 00:00 on the second press. Use interrupts for the switches and make sure they are de-bounced.
(In assembly, not C please)
Explanation / Answer
int const a = 10;
int const b = 9;
int const c = 8;
int const d = 7;
int const e = 6;
int const f = 5;
int const g = 4;
int const p = A2;
int const q = A0;
int const r = A1;
int const s = 3;
int const t = 2;
int const u = A3;
int const v = 11;
int i;
int j;
int sir;
int ser;
void setup(){
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(A2, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(3, OUTPUT);
pinMode(2, OUTPUT);
pinMode(A3, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){
for (j=0; j<10; j++){
ser = j;
if(ser == 0){
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, LOW);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
else if(ser == 1){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
}
else if(ser == 2){
digitalWrite (a, LOW);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
else if(ser == 3){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
else if(ser == 4){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, LOW);
digitalWrite (g, HIGH);
}
else if(ser == 5){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, LOW);
}
else if(ser == 6){
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, LOW);
}
else if(ser == 7){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, LOW);
digitalWrite (e, LOW);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
else if(ser == 8){
digitalWrite (a, HIGH);
digitalWrite (b, HIGH);
digitalWrite (c, HIGH);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
else if(ser == 9){
digitalWrite (a, HIGH);
digitalWrite (b, LOW);
digitalWrite (c, LOW);
digitalWrite (d, HIGH);
digitalWrite (e, HIGH);
digitalWrite (f, HIGH);
digitalWrite (g, HIGH);
}
for (i=0; i<10; i++){
sir = i;
if(sir == 0){
digitalWrite (p, HIGH);
digitalWrite (q, HIGH);
digitalWrite (r, HIGH);
digitalWrite (s, LOW);
digitalWrite (t, HIGH);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 1){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, LOW);
digitalWrite (s, LOW);
digitalWrite (t, LOW);
digitalWrite (u, LOW);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 2){
digitalWrite (p, LOW);
digitalWrite (q, HIGH);
digitalWrite (r, HIGH);
digitalWrite (s, HIGH);
digitalWrite (t, LOW);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 3){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, HIGH);
digitalWrite (s, HIGH);
digitalWrite (t, LOW);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 4){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, LOW);
digitalWrite (s, HIGH);
digitalWrite (t, HIGH);
digitalWrite (u, LOW);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 5){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, HIGH);
digitalWrite (s, HIGH);
digitalWrite (t, HIGH);
digitalWrite (u, HIGH);
digitalWrite (v, LOW);
delay (1000);
}
else if(sir == 6){
digitalWrite (p, HIGH);
digitalWrite (q, HIGH);
digitalWrite (r, HIGH);
digitalWrite (s, HIGH);
digitalWrite (t, HIGH);
digitalWrite (u, HIGH);
digitalWrite (v, LOW);
delay (1000);
}
else if(sir == 7){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, LOW);
digitalWrite (s, LOW);
digitalWrite (t, LOW);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 8){
digitalWrite (p, HIGH);
digitalWrite (q, HIGH);
digitalWrite (r, HIGH);
digitalWrite (s, HIGH);
digitalWrite (t, HIGH);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
else if(sir == 9){
digitalWrite (p, HIGH);
digitalWrite (q, LOW);
digitalWrite (r, LOW);
digitalWrite (s, HIGH);
digitalWrite (t, HIGH);
digitalWrite (u, HIGH);
digitalWrite (v, HIGH);
delay (1000);
}
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.