BASIC4MCU | 질문게시판 | 답변 : 8051 관련해서 질문드립니다.
페이지 정보
작성자 master 작성일2018-02-08 14:25 조회5,616회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=196
본문
1234567891011121314151617181920212223 // MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-02-08 오후 2:27:22// by Ok-Hyun Park// P3.3이면 외부인터럽트죠?//char flag=0; // 전역변수//외부인터럽트1 함수(){ // 하강엣지 인터럽트flag^=1; // 비트0 반전}//void TMR1_int(void)interrupt 3{TH1=0x63; TL1=0xC0;if(flag){if(onecnt){if(--onecnt==0){ onecnt=25;if(++number>9999)number=0;convert();}}}}// 외부 인터럽트 설정 및 함수명은 알아서 수정하세요
//
123456789101112131415161718192021 // MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-02-08 오후 2:29:45// by Ok-Hyun Park//P3.3이면 외부인터럽트죠?//char flag=0; // 전역변수//외부인터럽트1 함수(){ // 하강엣지 인터럽트flag^=1; // 비트0 반전}//void TMR1_int(void)interrupt 3{TH1=0x63; TL1=0xC0;if(flag){if(--onecnt==0){ onecnt=25;if(++number>9999)number=0;convert();}}}// onecnt 이 변수는 초기값으로 0을 주면 안됩니다. 문맥상 25를 줘야겠죠.
//
flag^=1; // 비트0 반전
flag 변수를 1과 xor 연산을 하면
(변수 초기값이 0이므로) 결과는 0, 1 두가지만 나오게 됩니다.
//
if(flag){
flag가 0이면 거짓이라서 if()문이 실행되지 않고
flag가 0이 아니면 참이라서 if()문이 실행됩니다.
댓글 1
조회수 5,61627315co님의 댓글
27315co 작성일친절하고 자세한 설명 정말 감사드립니다.