|
關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 26 Sep 2008 11:20 PM |
#include "ht47r20a-1.H"
const char digit[16]={0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101,
0b01111101,0b00000111,0b01111111,0b01101111,0b00110111,0b01111100,
0b00111001,0b01011110,0b01111001,0b01110001};
char lcdram[18] @ 0x140;
void all_lcdoff();
void all_lcdon();
#define Delay(x) _delay(x)
void InitR2F();
void dsp_lcd();
unsigned int RC_Ch1(unsigned char RSCS);
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
unsigned int TRS1; // 此值為RT1~CS1振盪計數100 次所花費的時間
unsigned int TRT1;
unsigned long Res1; //原始4位元組
unsigned long Res1_avg; //原始3位元組
unsigned char cnt;
unsigned char Misc_Flag;
unsigned char Sample_cnt;
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#define STDRes 9890 //定義標準精密電阻10k~9.89K=9890
#define TBCount 100 // TimerB每次取樣計數次數
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void main(void)
{
int i;
all_lcdon();
Delay(50000);
Delay(50000);
Delay(50000);
all_lcdoff();
InitR2F();
while(1)
{
Res1=0;
for(i=0;i<200;i++)
{
TRS1=RC_Ch1(0x53); // 此值為RS1~CS1振盪計數100 次所花費的時間
TRT1=RC_Ch1(0x63); // 此值為RT1~CS1振盪計數100 次所花費的時間
Res1=Res1+TRT1*STDRes/TRS1; //
}
}
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void InitR2F()
{
_adcr=0;
_tmrc=0;
_intc0=0;
_intc1=0;
Sample_cnt=0;
Res1_avg=0;
Res1=0;
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
unsigned int RC_Ch1(unsigned char RSCS) //RC AD Converter for Channel 1
{
_adcr=RSCS; // RS1~CS1, A/D Enable; TimerB Overflow
_tmrc=0x08; // System Clock
_tmrah=0; //計時間隔設定初始值
_tmral=0; // 計時間隔設定初始值
_tmrbh=(65535-TBCount)/256; //計時間隔設定初始值
_tmrbl=(65535-TBCount)%256; // 計時間隔設定初始值
_ton=1;
while(~_tf); //等待TF=0 ->1
_tf=0;
return _tmrah*256+_tmral;
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void all_lcdoff()
{
int ram;
for(ram=0;ram<19;ram++)
{
lcdram[ram]=0;
}
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void all_lcdon()
{
int ram;
for(ram=0;ram<19;ram++)
{
lcdram[ram]=0xff;
}
}
//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
void dsp_lcd(unsigned char addr,unsigned char data)
{
lcdram[addr-0x140]=data; ;;為何compiler時會有錯誤訊息-->function not support yet
lcdram[addr-0x140+1]=data; ;;;;為何compiler時會有錯誤訊息-->function not support yet
} |
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 27 Sep 2008 03:28 PM |
你用的IDE3000什么版本?我6.8的,编译你的程序提示"在存取 一未名文件时发生共享违例"
你的程序发完整了吗? |
************************
盛扬半导体(上海)有限公司
单元富 shanyoyo
MAIL:shanyoyo@holtek.com.cn
TEL:021-54224590 ext 212
FAX:021-54224596
************************
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 27 Sep 2008 09:41 PM |
下列程式是從盛群下載的範例,compiler後還是錯誤
我不懂問題出在哪??我是用ide3000 v6.8
請holtek工程師幫我看一下
//////////////////////////////////////////////////////////////////////////////////////////////////////
#include "ht46r63.h"
char digit[10] = { 0b01111101, 0b00011000, 0b01110011, 0b01111010, //'0', '1','2','3'
0b00011110, 0b01101110, 0b01101111, 0b00111000, // '4','5','6','7'
0b01111111, 0b01111110 } ; // '8', '9'
char LcdRam[20] @ 0x140 ; // LCD RAM 記憶體
void DelayTime(unsigned int count) // 10 * count + 11, if count > 256
{
while( count != 0 ) count-- ;
}
// addr (IN) = LCD RAM 位址 = 0x140+x
// datal = 寫入 LCD RAM 的資料, bit0~2 寫入 addr, bit3~5 寫入 addr+1
// bit 6 寫入 addr+2 的 bit2
void DisplayLcd(unsigned char addr, unsigned char data1)
{
LcdRam[addr - 0x140] = data1 & 0x7 ; // 取位元 0 ~ 2
LcdRam[addr - 0x140+1] = (data1 >> 3) & 0x7 ; // 取位元 3~5
LcdRam[addr - 0x140+2] = ((data1 >> 6) & 0x7) << 2 ; // 取位元6, 在左移2位
}
// 主函式
void main(void)
{
int k, count ;
for( k=0 ; k < 20 ; k++ ) LcdRam[k] = 0 ; // 將 LCD 記憶體清為0, LCD不顯示
for( count=0 ; count < 1000 ; count++ ) // 顯示數字從 0 到 999
{
k = (count /100) % 10 ; // 取出百位數
DisplayLcd(0x146, digit[k]) ;
k = (count / 10) % 10 ; // 取出十位數
DisplayLcd(0x143, digit[k]) ; // 顯示數字
k = count % 10 ; // 取出個位數
DisplayLcd(0x140, digit[k]) ;
_delay(250000) ; // 延長 1 秒
_delay(250000) ;
_delay(250000);
_delay(250000) ;
}
}
|
|
|
 |
|
longyue
|
 |
| 参与日期: 03 Mar 2006 |
| 总张贴数: 1921 |
| |
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 28 Sep 2008 09:28 AM |
1、错误提示是什么
2、请勿重复发帖 |
**************************
承接单片机方案开发
PC端应用软件开发
QQ:4409752
************************** |
|
 |
|
longyue
|
 |
| 参与日期: 03 Mar 2006 |
| 总张贴数: 1921 |
| |
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 28 Sep 2008 09:29 AM |
| 另外。。。。这是哪个范例呀?貌似看上去很眼生呀 |
**************************
承接单片机方案开发
PC端应用软件开发
QQ:4409752
************************** |
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 28 Sep 2008 10:10 AM |
lancer0498
我编译你后面发的范例编译后,也提示出"此功能未支持"
LcdRam[addr - 0x140] = data1 & 0x7 ; // 取位元 0 ~ 2
LcdRam[addr - 0x140+1] = (data1 >> 3) & 0x7 ; // 取位元 3~5
LcdRam[addr - 0x140+2] = ((data1 >> 6) & 0x7) << 2 ; // 取位元6, 在左移2位
我将程序改成
unsigned char abc;
unsigned char bcd;
unsigned char cde;
abc=addr-0x140;
LcdRam[abc] = data1 & 0x07 ;
bcd=addr-0x140+1;
LcdRam[bcd] = ((data1 >> 3) & 0x07) ;
cde=addr-0x140+2;
LcdRam[cde] = ((data1 >> 6) & 0x07) << 2 ;
后,可以编译通过;把LcdRam[addr - 0x140] 分解下来,就可以了,只是麻烦了些. |
************************
盛扬半导体(上海)有限公司
单元富 shanyoyo
MAIL:shanyoyo@holtek.com.cn
TEL:021-54224590 ext 212
FAX:021-54224596
************************
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 29 Sep 2008 10:32 AM |
了解~~~感謝您的協助
關於重複發問的問題不好意思~~~很急...所以想說多問問 |
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 09 Feb 2009 06:05 PM |
我的會出現
error(C6001) G:\WORK\HAIMA\TEMP\63LCD.C 17 : function not supported yet
LcdRam[addr - 0x140] = data1 & 0x7 ; // 這行出錯,不知道為什麼?
|
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 10 Feb 2009 09:05 AM |
ard_chen:
我编译你后面发的范例编译后,也提示出"此功能未支持"
LcdRam[addr - 0x140] = data1 & 0x7 ; // 取位元 0 ~ 2
LcdRam[addr - 0x140+1] = (data1 >> 3) & 0x7 ; // 取位元 3~5
LcdRam[addr - 0x140+2] = ((data1 >> 6) & 0x7) << 2 ; // 取位元6, 在左移2位
我将程序改成
unsigned char abc;
unsigned char bcd;
unsigned char cde;
abc=addr-0x140;
LcdRam[abc] = data1 & 0x07 ;
bcd=addr-0x140+1;
LcdRam[bcd] = ((data1 >> 3) & 0x07) ;
cde=addr-0x140+2;
LcdRam[cde] = ((data1 >> 6) & 0x07) << 2 ;
后,可以编译通过;把LcdRam[addr - 0x140] 分解下来,就可以了,只是麻烦了些. |
************************
盛扬半导体(上海)有限公司
单元富 shanyoyo
MAIL:shanyoyo@holtek.com.cn
TEL:021-54224590 ext 212
FAX:021-54224596
************************
|
|
 |
|
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 10 Feb 2009 11:21 AM |
如下代碼可能有問題吧,請check:
“
_delay(250000) ; // 延長 1 秒
_delay(250000) ;
_delay(250000);
_delay(250000) ;
”
記得_delay()函數參數數值不能超過65536(word字節)。
祝好運~~~ |
============================================
MSN: Jammas.yang@hotmail.com
QQ: 563683224
Office: +86-0755-86169908-8511(ext)
============================================
|
|
 |
|
longyue
|
 |
| 参与日期: 03 Mar 2006 |
| 总张贴数: 1921 |
| |
|
Re: 關於c語言錯誤-->function not support yet(在lcd顯示的函式錯誤) 张贴于: 10 Feb 2009 11:35 AM |
_delay(250000);
这里会出警告,但不会报错 |
**************************
承接单片机方案开发
PC端应用软件开发
QQ:4409752
************************** |
|
 |
|