Page 123 - MDP2020-3
P. 123

················································································  명장양성프로젝트  【MDP】  과제발표회  자료집  Ⅲ    |  117


                라)  스위치를  사용하여  FND로  숫자  카운트
            #include  <mega128.h>

            #include  <delay.h>


            unsigned  char  seg_pat[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};
            unsigned  char  run=0,msec=0,sec=0;



            void  main(){
                DDRE=0x00;      //스위치
                DDRA=0x0f;      //TR21  7-segment  common  anode,  low  active
                DDRC=0xFF;      //7-segment  a~g,  high  active



                while(1)  {
                    //F1=0.01초,  마이크로세컨트를  줌으로써  1초를  맞춤
                    PORTA=0xfe;  PORTC=seg_pat[msec%10];            delay_us(2500);


                    //F2=0.1초

                    PORTA=0xfd;  PORTC=seg_pat[msec/10];            delay_us(2500);


                    //F3=1초
                    PORTA=0xfb;  PORTC=seg_pat[sec%10]+0x80;    delay_us(2500);



                    //F4=10초
                    PORTA=0xf7;  PORTC=seg_pat[sec/10];              delay_us(2500);

                    if(run==1)  {                                                          //  run=1일  때만  카운터  증가

                        if(++msec>99){  msec=0;                      //msec가 100이 넘어가면 sec가 1씩 증가, msec는 다시 0
                            if(++sec>99)sec=0;                                  //sec가  100이  넘어가면  sec는  다시  0
                        }
                    }
                    if(PINE.0==0)  run=1;                                      //SW0을  눌렀을  때  start
                    if(PINE.1==0)  run=0;                                      //SW1을  눌렀을  때  stop

                    if(PINE.2==0){  run=0,  sec=0,  msec=0;  }  //  SW2를  눌렀을  떄  리셋
                }
            }
   118   119   120   121   122   123   124   125   126   127   128