G
Guest
Guest
私は16F917 PICのでEEPROMを使用してAT25256 SPIの午前しよう。私の事はバグが関数読み取られています。SPIクロックとデータは、クロに表¥示されます。正しい場合はそれは確かに私はではない。スコープをメモリ深いしないいる。
ヘルプをいくつかしてください1つは。これは、内のコードはmain()#は<htc.h>含まれて
#が含まれます"pic_function.h"
#が含まれます"delay.hに"
#が含まれます"AT25256.h"
私はunsigned char型。)メイン(
(
)init_pic(; / / initの写真paripheral
init_AT25256();
)中(1
(
write_AT25256(0xBC、0x0100と);
私= read_AT25256(0x0100と);
場合)(一== 0xBC
(
RB3および= 1;
RB4は= 0;
)
他
(
RB4は= 1;
RB3および= 0;
)
)
)このためのコードですinit_pic#は<htc.h>含まれて
#が含まれます"pic_function.h"
__CONFIGは(0x20E2); / /タイマーを見て犬のオフになって
)無効init_pic(ボイド
(
/ /発振器の構¥成登録
/ / OSCCON =
/ / initの割り込みレジスタ
INTCON = 0xE0;
/ / initのポートの方向
TRISA = 0xFFまで。
TRISB = 0xE7;
TRISC = 0xAF;
TRISD = 0xF0な。
TRISE = 0xFFまで。
RB3および= 0;
RB4は= 0;
/は/ initのspiの
SSPEN = 0;
SSPSTAT | = 0x80に。
SSPCON | = 0x10を。
SSPBUF = 0x00は;
SSPEN = 1;
PEIEは= 1; / /フラグを有効にする周辺割り込み
GIEは= 1; /旗割り込みイネーブル/グローバル
)これはAT25256コード用です#は<htc.h>含まれて
#が含まれます"pic_function.h"
#が含まれます"delay.hに"
#が含まれます"AT25256.h"
無効init_AT25256(ボイド)
(
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(レン);
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(WRSRの);
write_spi(NOPROT);
ram_cs = 1;
)
ボイドwrite_AT25256(unsigned char型データ、unsigned int型のアドレス)
(
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(レン);
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(書き込み);
write_spi((アドレス>>クール);
write_spiは((アドレス&0xFFまで));
write_spi(データ);
ram_cs = 1;
)
)unsigned char型read_AT25256(unsigned int型のアドレス
(
unsigned char型データ;
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(読み取り);
write_spi((アドレス>>クール);
write_spiは((アドレス&0xFFまで));
データ= read_spi();
ram_cs = 1;
戻り値のデータ;
)
ボイドwrite_spi(unsigned char型データ)
(
SSPIF = 0;
SSPBUF =データ;
)中(!SSPIF
(
)
delay_in_ms(5);
)
read_spi文字符号なし(無効)
(
unsigned char型温度;
SSPIF = 0;
SSPBUF = 0xFFまで。
)中(!SSPIF
(
)
delay_in_ms(5);
気温= SSPBUF;
戻り温度;
)
ヘルプをいくつかしてください1つは。これは、内のコードはmain()#は<htc.h>含まれて
#が含まれます"pic_function.h"
#が含まれます"delay.hに"
#が含まれます"AT25256.h"
私はunsigned char型。)メイン(
(
)init_pic(; / / initの写真paripheral
init_AT25256();
)中(1
(
write_AT25256(0xBC、0x0100と);
私= read_AT25256(0x0100と);
場合)(一== 0xBC
(
RB3および= 1;
RB4は= 0;
)
他
(
RB4は= 1;
RB3および= 0;
)
)
)このためのコードですinit_pic#は<htc.h>含まれて
#が含まれます"pic_function.h"
__CONFIGは(0x20E2); / /タイマーを見て犬のオフになって
)無効init_pic(ボイド
(
/ /発振器の構¥成登録
/ / OSCCON =
/ / initの割り込みレジスタ
INTCON = 0xE0;
/ / initのポートの方向
TRISA = 0xFFまで。
TRISB = 0xE7;
TRISC = 0xAF;
TRISD = 0xF0な。
TRISE = 0xFFまで。
RB3および= 0;
RB4は= 0;
/は/ initのspiの
SSPEN = 0;
SSPSTAT | = 0x80に。
SSPCON | = 0x10を。
SSPBUF = 0x00は;
SSPEN = 1;
PEIEは= 1; / /フラグを有効にする周辺割り込み
GIEは= 1; /旗割り込みイネーブル/グローバル
)これはAT25256コード用です#は<htc.h>含まれて
#が含まれます"pic_function.h"
#が含まれます"delay.hに"
#が含まれます"AT25256.h"
無効init_AT25256(ボイド)
(
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(レン);
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(WRSRの);
write_spi(NOPROT);
ram_cs = 1;
)
ボイドwrite_AT25256(unsigned char型データ、unsigned int型のアドレス)
(
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(レン);
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(書き込み);
write_spi((アドレス>>クール);
write_spiは((アドレス&0xFFまで));
write_spi(データ);
ram_cs = 1;
)
)unsigned char型read_AT25256(unsigned int型のアドレス
(
unsigned char型データ;
ram_cs = 1;
delay_in_us(10);
ram_cs = 0;
write_spi(読み取り);
write_spi((アドレス>>クール);
write_spiは((アドレス&0xFFまで));
データ= read_spi();
ram_cs = 1;
戻り値のデータ;
)
ボイドwrite_spi(unsigned char型データ)
(
SSPIF = 0;
SSPBUF =データ;
)中(!SSPIF
(
)
delay_in_ms(5);
)
read_spi文字符号なし(無効)
(
unsigned char型温度;
SSPIF = 0;
SSPBUF = 0xFFまで。
)中(!SSPIF
(
)
delay_in_ms(5);
気温= SSPBUF;
戻り温度;
)