#include "commondef.h"
#include "menu.h"
+unsigned char akc6955_readcmd(unsigned char reg)
+{
+ return i2c_read_byte(AKC6955_ADDRESS, reg);
+}
+
+void akc6955_writecmd(unsigned char reg,unsigned char data)
+{
+ i2c_send_byte(AKC6955_ADDRESS, reg, data);
+}
+
+unsigned char akc6955_get_amband(void)
+{
+ return akc6955_get_band() >> 3;
+}
+
+unsigned char akc6955_get_fmband(void)
+{
+ return akc6955_get_band() & 0x07;
+}
+
void akc6955_chg_fm(unsigned char f, unsigned int freq)
{
f.byte = akc6955_readcmd(AKC6955_POWER);
band = 0;
if(!f.b6){
- akc6955_get_amband(band);
+ band = akc6955_get_amband();
start = ambands[band].start;
stop = ambands[band].end;
if(band == AKC6955_BAND_AMUSER){
}
}
} else {
- akc6955_get_fmband(band);
+ band = akc6955_get_fmband();
start = ((fmbands[band].start - 3000) * 2) / 5;
stop = ((fmbands[band].end - 3000) * 2) / 5;;
if(band == AKC6955_BAND_FMUSER){
freq = (i * 5) / 2 + 3000; // freq' = 25*i[KHz] = (25 / 10) *i [10KHz]
} else { // 5K
b.byte = akc6955_readcmd(AKC6955_CH_HI);
- akc6955_get_amband(band);
+ band = akc6955_get_amband();
freq = i * 5;
if((band == AKC6955_BAND_MW2) || (b.b5)){
freq = i * 3;
__bitops_t f;
__bitops_t mode3k;
unsigned char band;
- unsigned int start, stop;
+ unsigned char q;
f.byte = akc6955_readcmd(AKC6955_POWER);
if(f.b6) { // FM
- akc6955_get_fmband(band);
-// band &= 7;
- ch = ((freq - 3000) * 4) / 10;
+ band = akc6955_get_fmband();
+ // band &= 7;
+ ch = ((freq - 3000) * 4) / 10;
} else {
- akc6955_get_amband(band);
+ band = akc6955_get_amband();
// if(band >= AKC6955_BAND_AMEND) band = AKC6955_BAND_AMEND - 1;
mode3k.byte = akc6955_readcmd(AKC6955_CNR_AM);
- if(band == AKC6955_BAND_MW2) {
- ch = (freq / 9) * 3; // See datasheet.
- } else if(mode3k.b7){
+ if((band == AKC6955_BAND_MW2) || (mode3k.b7)){
ch = freq / 3;
} else {
ch = freq / 5;
return batt;
}
+/*
+ * Misc
+ */
+void akc6955_set_fmbandwidth(unsigned char bw)
+{
+ unsigned char c = akc6955_readcmd(AKC6955_STEREO);
+ c = (c & 0xfc) | (bw & 0x03);
+ akc6955_writecmd(AKC6955_STEREO, c);
+}
+
+unsigned char akc6955_get_fmbandwidth(void)
+{
+ return (akc6955_readcmd(AKC6955_STEREO) & 0x03);
+}
+
+
+
void akc6955_set_thresh_fmstereo(unsigned char a)
{
unsigned char b;
#define _AKC6955_WAIT_12_5uS() __delay_us(13)
#endif
-#define akc6955_get_amband(b) { \
- b = akc6955_get_band() >> 3; \
- }
-
-#define akc6955_get_fmband(b) { \
- b = akc6955_get_band() & 0x07; \
- }
-
+extern unsigned char akc6955_readcmd(unsigned char reg);
+extern void akc6955_writecmd(unsigned char reg,unsigned char data);
extern unsigned char akc6955_getband(void);
+extern unsigned char akc6955_get_amband(void);
+extern unsigned char akc6955_get_fmband(void);
extern void akc6955_chg_fm(unsigned char fm, unsigned int freq);
extern unsigned char akc6955_get_fm(void);
extern unsigned char akc6955_get_band(void);
extern void akc6955_set_thresh_fmcnr(unsigned char a);
extern void akc6955_set_thresh_amcnr(unsigned char a);
extern void akc6955_set_thresh_width(unsigned char a);
+extern void akc6955_set_fmbandwidth(unsigned char bw);
+extern unsigned char akc6955_get_fmbandwidth(void);
-#define akc6955_set_fmbandwidth(bw) { \
- unsigned char c = akc6955_readcmd(AKC6955_STEREO); \
- c = (c & 0xfc) | (bw & 0x03); \
- akc6955_writecmd(AKC6955_STEREO, c); \
-} \
-
-#define akc6955_get_fmbandwidth(c) { \
- c = akc6955_readcmd(AKC6955_STEREO) & 0x03; \
-} \
-
-#define akc6955_writecmd(reg,data) {\
- i2c_send_byte(AKC6955_ADDRESS, reg, data);\
-}
-
-#define akc6955_readcmd(reg) i2c_read_byte(AKC6955_ADDRESS, reg)
-
#ifdef __cplusplus
}
/*
* Frequency utils
*/
-extern void format_frequencies(unsigned int page);
-extern void check_frequencies(void);
-extern void save_frequencies(void);
-extern char load_frequencies(unsigned int page, unsigned char check_only);
-extern char load_userbands(void);
-extern void save_userbands(void);
-extern void format_userbands(void);
+ extern void format_frequencies(unsigned int page);
+ extern void check_frequencies(void);
+ extern void save_frequencies(void);
+ extern int load_frequencies(unsigned int page, unsigned char check_only);
+ extern int load_userbands(void);
+ extern void save_userbands(void);
+ extern void format_userbands(void);
/*
* Constants
*/
* 0x0fff : User frequencies ( 12*2*28 = 672chs Max.)
* 0x1000- : Reserve.
*/
-char load_frequencies(unsigned int page, unsigned char check_only)
+int load_frequencies(unsigned int page, unsigned char check_only)
{
__freqset_t *p;
return sum;
}
-char load_userbands(void)
+int load_userbands(void)
{
__userband_t_t *p = &userband;
#else // Parallel
static void _ACM1602_TC_WAIT(void)
{
- __delay_us(5);
+#ifdef __SDCC
+ delay10tcy(4)
+#else
+ __delay_us(5);
+#endif
}
static unsigned char lcd_busychk(unsigned char addr)
}
-void acm1602_locate_16x2(unsigned char addr, char x, char y)
+void acm1602_locate_16x2(unsigned char addr, unsigned char x, unsigned char y)
{
unsigned char ramaddr;
- if((x < 0) || (x >= 16)) return;
- if((y < 0) || (y > 1)) return;
+ if(x > 16) return;
+ if(y > 1) return;
ramaddr = (y == 0)? x : (x | 0x40);
acm1602_setdataramaddress(addr, ramaddr);
}
/*
* For using
*/
-void acm1602_locate_8x2(unsigned char addr, char x, char y)
+void acm1602_locate_8x2(unsigned char addr, unsigned char x, unsigned char y)
{
unsigned char ramaddr;
- if((x < 0) || (x >= 8)) return;
- if((y < 0) || (y > 1)) return;
+ if(x > 8) return;
+ if(y > 1) return;
ramaddr = (y == 0)? x : x | 0x40;
acm1602_setdataramaddress(addr, ramaddr);
}
// Notes: Master clock = 8MHz(0.125uS)
// Wait 5us
#ifdef __SDCC
-#define _ACM1602_TC_WAIT() delay10tcy(4)
+//#define _ACM1602_TC_WAIT() delay10tcy(4)
// Wait 50us
#define _ACM1602_SHORT_WAIT() delay100tcy(4)
// Wait 5ms
extern void acm1602_cls(unsigned char addr);
extern void acm1602_putchar(unsigned char addr, unsigned char c);
-extern void acm1602_locate_16x2(unsigned char addr, char x, char y);
-extern void acm1602_locate_8x2(unsigned char addr, char x, char y);
+extern void acm1602_locate_16x2(unsigned char addr, unsigned char x, unsigned char y);
+extern void acm1602_locate_8x2(unsigned char addr, unsigned char x, unsigned char y);
extern void acm1602_home(unsigned char addr);
extern void acm1602_cursordir(unsigned char addr, unsigned char right);
extern void acm1602_dispcursor(unsigned char addr, unsigned char flag);
break;
case charcode_4:
printstr("FM Bandwidth:");
- akc6955_get_fmbandwidth(c);
+ c = akc6955_get_fmbandwidth();
setup.fmbandwidth = pollkey_numeric(c) & 3;
akc6955_set_fmbandwidth(setup.fmbandwidth);
break;
if(cc == charcode_0){
pp = 96;
mode3k = 0xff;
- } else if(cc = charcode_1) {
+ } else if(cc == charcode_1) {
pp = 160;
mode3k = 0;
}
setup.prevolume = akc6955_get_prevolume();
if(setup.fm != 0){
setup.fmfreq = akc6955_get_freq();
- akc6955_get_fmband(setup.fmband);
+ setup.fmband = akc6955_get_fmband();
setup.fmfreq_bank[setup.fmband] = setup.fmfreq;
stereoflag = akc6955_get_stereo();
- akc6955_get_fmbandwidth(setup.fmbandwidth);
+ setup.fmbandwidth = akc6955_get_fmbandwidth();
} else {
setup.amfreq = akc6955_get_freq();
- akc6955_get_amband(setup.amband);
+ setup.amband = akc6955_get_amband();
setup.amfreq_bank[setup.amband] = setup.amfreq;
c.byte = akc6955_readcmd(AKC6955_CNR_AM);
if(c.b7) {
keyin_fifo[keyin_nowp] = b;
keyin_nowp++;
keyin_counter++;
- if((keyin_nowp > 31) || (keyin_nowp < 0)) keyin_nowp = 0;
+ if(keyin_nowp > 31) keyin_nowp = 0;
}
/*
c = keyin_fifo[keyin_readp];
keyin_readp++;
keyin_counter--;
- if((keyin_readp > 31) || (keyin_readp < 0)) keyin_readp = 0;
+ if(keyin_readp > 31) keyin_readp = 0;
return c;
}
-void printstr(char *s)
+void printstr(const char *s)
{
int p = 0;
// _CURSOR_RIGHT();
#endif
extern unsigned char readkey_compare(void);
-extern void printstr(char *s);
+extern void printstr(const char *s);
extern void print_numeric(int i, unsigned char supressf);
extern void setsignal_tune(unsigned char flag);
extern void set_backlight(unsigned char flag, unsigned int val);