こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

LCDを用いたカウントダウンプログラムについて

今、PIC16F84AとLCDを用いて255からカウントダウンするところをLCDに表示するプログラムを作っています。

開発環境は
・MPLAB X IDE
・XC8コンパイラー
・PIC Kit3
を使っています。

プログラムはコンパイル、ビルドおよび書き込みは正常にできます。
しかし、いざ動かしてみるとカウントが「255」から「254」にならず「52」になってしまいます。
プログラムのどこがおかしいか全くわかりません。

また、プログラムにおいてLCDの表示ルーチンは、「Hi-Tech C」のサンプルを使用していて
(Delay関数の個所をXC8用に書き換えています。)パスコンは、つけたほうが良いのですが、今回はつけていません。

参考のため回路図とプログラムを掲載しますので解決策がありましたら教えてください。

よろしくお願いいたします。

////////////////以下ソースコード////////////////////
/*
* File: main.c
*
* Created on 2015/12/24, 16:37
*/

//#define _LEGACY_HEADERS

#include <pic.h>
#include <stdlib.h>
#include "lcd.h"
#define _XTAL_FREQ 4000000
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (Power-up Timer is disabled)
#pragma config CP = OFF // Code Protection bit (Code protection disabled)

void ioport(void);

void main(void) {
unsigned char data;
char str[2];
ioport();
lcd_init();
data=255;
while(1){
lcd_clear();
lcd_goto(0x00);
itoa(str,data,10);
lcd_puts(str);
if(data<0){
data=255;
}
__delay_ms(250);
__delay_ms(250);
data--;
}
}

void ioport(void)
{
TRISA=0x00;
PORTA=0x00;

TRISB=0x00;
PORTB=0x00;
}
//////////////////////////////////

投稿日時 - 2015-12-26 11:48:14

QNo.9101542

すぐに回答ほしいです

質問者が選んだベストアンサー

断片的にしか見ていないのですが、「255」という文字列を格納しようとすると、”2”,”5,””5”とnulも含めて4バイト必要なはずですが、strという配列は2バイトしか確保していないので、はみ出してむりやり格納してしまいませんか?

投稿日時 - 2015-12-26 13:49:00

お礼

早速の回答、ありがとうございます。

そうですね。言われて初歩的なミスをしていたことに気づきました。

格納の容量を増やしてもう一回試してみます。

ありがとうございました。

投稿日時 - 2015-12-26 18:01:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-