BASIC4MCU | 질문게시판 | 답변 : avr atmega128
페이지 정보
작성자 master 작성일2018-12-09 01:39 조회6,483회 댓글0건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6585
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-09 오전 1:45:08// by Ok-Hyun Park//#include <mega128.h>#include <stdlib.h>//------------------------------------------------------------------char bcd_table[90]={0xA0,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90}; //0,1,2,3,4,5,6,7,8,9,10//==================================================================//롯또번호 발생 주 프로그램.//------------------------------------------------------------------interrupt[TIM1_COMPA]void timer1_compa_isr(void){ //10msstatic bit start_flag=0,reset_flag=0,up_flag=0,down_flag=0;static char run=0,data[12],data_rand[6],count=0;static int ms10=0,seed=0;char i,j,k;//----------------------------------------seed++; //난수의 씨앗//----------------------------------------if(!PINF.7){ // start key 누르면if(start_flag==0){ start_flag=1; srand(seed); run=1; ms10=0; }}else{ start_flag=0; }//----------------------------------------if(run==1){ // led를 무작위로 10초동안 깜박임.PORTC=0x10<<(rand()%4);if(++ms10>999){ ms10=0; // 10초 후// 롯또 번호 추출.for(i=0; i<6; i++)data_rand[i]=45; // data 초기화for(i=0; i<6; i++){here:j=rand()%45;for(k=0; k<6; k++){ if(data_rand[k]==j)goto here; } // 중복검사data_rand[i]=j;}for(i=0; i<6; i++){ data_rand[i]++; } // 0~44->1~45로 변환for(i=0; i<6; i++){ // 표시할 data로 전환.data[i*2 ]=bcd_table[data_rand[i]/10]; // 십의자리data[i*2+1]=bcd_table[data_rand[i]%10]; // 일의자리}count=0;run=2;}}//----------------------------------------if(run==2){ // 롯또 번호 표시.//----------------------------------------if(!PINF.6){ // reset key 누르면if(reset_flag==0){ reset_flag=1; run=0; }}else{ reset_flag=0; }//----------------------------------------if(!PINF.5){ // up key 누르면if(up_flag==0){ up_flag=1; if(count<11)count++; } //다음 data}else{ up_flag=0; }//----------------------------------------if(!PINF.4){ // down key 누르면if(down_flag==0){ down_flag=1; if(count>0)count--; } //이전 data}else{ down_flag=0; }//----------------------------------------PORTC=data[count];}}//=======================================================================void main(void){DDRC=0xF0; // PC7-PC4=LED outputPORTF=0xFF; // PORTF=KEY inputTCCR1B=0x0C; OCR1A=624; TIMSK=0x10; //10msSREG=0x80;while(1);}
댓글 0
조회수 6,483등록된 댓글이 없습니다.