View previous topic :: View next topic |
Author |
Message |
aadsan7
Joined: 04 Aug 2020 Posts: 1
|
pic16f877a timer |
Posted: Tue Aug 04, 2020 6:39 am |
|
|
Hello Dear,
I have a 1 button if I press 3 seconds than continue to project.
How I can do that ?
Thank you
Code: |
// 4-Digit digital counter using PIC16F877A
// Common anode 7-segment display
// https://simple-circuit.com/
#include <16F877A.h>
#use delay(crystal=8000000)
short s; // Used to know button position
unsigned int digit, digit1, digit10, digit100,digit1000;
unsigned long i = 0;
unsigned int seg(unsigned int num) {
switch (num) {
case 0 : return 0xC0;
case 1 : return 0xF9;
case 2 : return 0xA4;
case 3 : return 0xB0;
case 4 : return 0x99;
case 5 : return 0x92;
case 6 : return 0x82;
case 7 : return 0xF8;
case 8 : return 0x80;
case 9 : return 0x90;
}
}
void main(){
while(TRUE){
if(input(PIN_D0) == 1)
s = 1;
if(s == 1) {
if(input(PIN_D0) == 0) {
s = 0;
i++;
if(i > 9999)
i = 0;
}
}
digit = i % 10;
digit1 = seg(digit);
output_c(0x0F); // Turn off all displays
output_b(digit1); // Send ones digit
output_c(0x07); // Turn on display for ones
delay_ms(2);
digit = (i / 10) % 10;
digit10 = seg(digit);
output_c(0x0F); // Turn off all displays
output_b(digit10); // Send tens digit
output_c(0x0B); // Turn on display for tens
delay_ms(2);
digit = (i / 100) % 10;
digit100 = seg(digit);
output_c(0x0F); // Turn off all displays
output_b(digit100); // Send hundreds digit
output_c(0x0D); // Turn on display for hundreds
delay_ms(2);
digit = (i / 1000) % 10;
digit1000 = seg(digit);
output_c(0x0F); // Turn off all displays
output_b(digit1000); // Send thousands digit
output_c(0x0E); // Turn on display for thousands
delay_ms(2);
}
}
|
|
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Tue Aug 04, 2020 7:39 am |
|
|
You can check the CCS manual... !!!
'How do I wait only a specified time for a button press?'
is in the FAQ section.
Slightly modified, it could do what you want...
Jay |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19520
|
|
Posted: Tue Aug 04, 2020 7:53 am |
|
|
Or look at previous threads. For example:
<http://www.ccsinfo.com/forum/viewtopic.php?t=58888> |
|
|
|