BASIC4MCU | 질문게시판 | 올려주신 코드비전용코드를 avrstudio+winavr로 바꾸는중인데 ..
페이지 정보
작성자 choi 작성일2020-11-10 10:45 조회1,953회 댓글0건본문
이 코드를 참고하여 적외선센서 작동을위해
avrstudio4 + WINAVR +hyperterminal로 확인하려하는데
다음과같이 코드를 수정하였는데 값도 안나오고 문자열 출력도 안되네요.. 어느부분이 문제인지알수있을까요?
#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>
//
#define U_C unsigned char
#define U_I unsigned int
#define U_L unsigned long
//==============================================================================================
#define ss_delay _delay_us(15)
#define ck_delay _delay_us(5)
//==============================================================================================
void SPI_WR(U_C d) {
U_C i;
PORTB &= 0xFE; ss_delay;
for (i = 0; i < 8; i++) {
if (d & (0x80 >> i)) PORTB |= 0x01; else PORTB &= 0xFB;
PORTB &= 0xFD; ck_delay; PORTB |= 0x02; ck_delay;
}
PORTB |= 0x01;
_delay_ms(10);
}
int SPI_RD(void) {
U_C i;
int tp = 0;
PORTB &= 0xFE; ss_delay;
for (i = 0; i < 8; i++) {
PORTB &= 0xFD; ck_delay;
if (PINB & 0x03)tp |= 0x80 >> i;
PORTB |= 0x02; ck_delay;
}
PORTB |= 0x01;
_delay_ms(10);
return tp;
}
//==============================================================================================
void TX1_CH(U_C ch) { while (!(UCSR1A & 0x20)); UDR1 = ch; } // 송신 1바이트
void TX1_STR(U_C * str) { while (*str)TX1_CH(*str++); } // 문자열 송신함수
//==============================================================================================
void main(void) {
char str[50];
int Target, Ambient;
float f_t, f_a;
PORTB = 3; DDRB = 7; // SS & SCK 초기값 high
UCSR1B = 8; UBRR1L = 103;
while (1) {
SPI_WR(0xA0);
Target = SPI_RD(); //low
Target |= SPI_RD() << 8; //high
f_t = (float)Target;
f_t /= 100.0;
_delay_ms(50);
//
SPI_WR(0xA1);
Ambient = SPI_RD(); //low
Ambient |= SPI_RD() << 8; //high
f_a = (float)Ambient;
f_a /= 100.0;
_delay_ms(500);
//sprintf(str,"Target=%6d, Ambient=%6d \r",Target,Ambient);
sprintf(str, "Target=%7.2f, Ambient=%7.2f \r", f_t, f_a);
TX1_STR(str);
}
}
댓글 0
조회수 1,953등록된 댓글이 없습니다.