论坛风格切换切换到宽版
  • 3413阅读
  • 6回复

mc145162汇编例程 [复制链接]

上一主题 下一主题
离线cctvcctv
 
发帖
412
只看楼主 倒序阅读 0楼 发表于: 2008-01-26
搞了一天原来是时序反了,下面程序经过验证
;******************************************************************
;mc145162   vco频率16.4m
;******************************************************************
            le8 equ p2.2
              ck8 equ p2.0       ;定义数据端口
              da8 equ p2.1
              dt   equ p2.3
              ajmp ss
              org 0030h
        ss:       clr le8
              clr ck8               ;时钟置0
              clr da8               ;数据口清零
             
;******************************************************************
;
;******************************************************************
              setb le8              
              mov a, #10011000b
              acall up8data   ;发送定义功能数据
              clr le8            
;******************************************************************
             
              setb le8            
              mov a, #00110010b
              acall up8data   ;发送参考频率数据
              mov a,#0
              acall up8data   ;
              mov a,#10000000b
              acall up8data   ;
              mov a,#0
              acall up8data   ;
              clr le8
;******************************************************************
              mov a, #0ch
              acall up8data   ;发送分频数据
              mov a, #0d0h
              acall up8data   ;发送分频数据
              setb le8
              nop
              nop
              clr le8

              ajmp $
;******************************************************************

up8data: mov r2,#08h         ;数据发送8次子程序
              clr c
updata1: rlc a                 ;左移一位
              mov da8,c
                mov dt,c
              nop
           
              setb ck8
              nop
           
              clr ck8
           
              djnz r2,updata1 ;8次减1循环发送,未发完转updata1再发
         

              ret
离线yjg
发帖
274
只看该作者 1楼 发表于: 2008-01-28
能否看一下您的电路图
离线BA5SBA
发帖
3088
只看该作者 2楼 发表于: 2008-01-28
支持楼主的行为
离线BA4II
发帖
27814
只看该作者 3楼 发表于: 2008-01-28
抄收!谢谢!


最好再加上配套的功能显示及lsb\usb\cw\rtty\am\fm模式控制!



转一段无绳电话程序,看能否借鉴?
//****

#include <mc145162.h>

//---

uint8   mccontrolr;

uint16 mc14bitsauxcount;

uint16 mc12bitsrefcount;

uint16 mctxcount;

uint16 mcrxcount;

uint32 mc32bitsbuf;

#define mc145162_debug_out 1

//---

//mc145162初始化

void mc145162_mod_setup(void);

void mc145162_mod_reference(void);

void mc145162_tx_rx_counter(void);

void mc145162_ini(void)

{

mccontrolr       = 0x88;

mc14bitsauxcount   = 10240;

mctxcount       = 39983;

mcrxcount       = 45180;

mc145162_pin_install();

mc145162_mod_setup();

mc145162_mod_reference();

mc145162_tx_rx_counter();

}

//---

//发送control命令集

void mc145162_senddata(uint32 data,uint8 bits,uint8 mod);

void mc145162_mod_setup(void)

{

#define mc145162_test_bit_output 1

mc32bitsbuf = mccontrolr | 0x80;

#if mc145162_test_bit_output

mc32bitsbuf |= 0x20;

#endif

mc32bitsbuf <<= 24;

mc145162_pin_enb(1);

mc145162_senddata(mc32bitsbuf,8,false);

mc145162_pin_enb(0);

}

//---

//发送reference命令集

void mc145162_mod_reference(void)

{

if(mc14bitsauxcount > 16383)mc14bitsauxcount = 16383;

if(mc12bitsrefcount > 4095)mc12bitsrefcount = 4095;

if(mc14bitsauxcount <   16)mc14bitsauxcount = 16;

if(mc12bitsrefcount <   16)mc12bitsrefcount = 16;

#if mc145162_debug_out

{static char data[50];

sprintf(data,"mca=%d\r\n",mc14bitsauxcount);

dprintf(data);

}

#endif

#define mc145162_mod_reference_bit_aux (0x01           << 30)

#define mc145162_mod_reference_bit_tx0 (0x00           << 29)

#define mc145162_mod_reference_bit_rx0 (0x00           << 28)

#define mc145162_mod_reference_12b_ref (mc12bitsrefcount   << 16)

#define mc145162_mod_reference_bit_rs1 (0x00           << 15)

#define mc145162_mod_reference_bit_rs2 (0x00           << 14)

#define mc145162_mod_reference_bit_auxd(mc14bitsauxcount   << 0)

mc32bitsbuf =   mc145162_mod_reference_bit_aux |

mc145162_mod_reference_bit_tx0 |

mc145162_mod_reference_bit_rx0 |

mc145162_mod_reference_12b_ref |

mc145162_mod_reference_bit_rs1 |

mc145162_mod_reference_bit_rs2 |

mc145162_mod_reference_bit_auxd;

mc145162_pin_enb(1);

mc145162_senddata(mc32bitsbuf,32,false);

mc145162_pin_enb(0);

}

//---

//发送counter分频命令集

void mc145162_tx_rx_counter(void)

{

if(mctxcount < 16)mctxcount = 16;

if(mcrxcount < 16)mcrxcount = 16;

mc32bitsbuf = (mctxcount << 16) | mcrxcount;

#if mc145162_debug_out

{static char data[50];

sprintf(data,"mctxcount=%d\r\nmcrxcount=%d\r\n" ,mctxcount,mcrxcount);

dprintf(data);

}

#endif

mc145162_pin_enb(0);

mc145162_senddata(mc32bitsbuf,32,true);

}

//---

//数据发送子函数

void mc145162_senddata(uint32 data,uint8 bits,uint8 mod)

{uint8 i;

if(bits)bits--;

for(i = 0;i < bits;i++)

{

mc145162_pin_din(data&0x80000000);

mc145162_pin_clk(1)

mc145162_pin_clk(0);

data <<= 1;

}

mc145162_pin_din(data&0x80000000);

mc145162_pin_clk(1)

if(mod){mc145162_pin_enb(1);}

mc145162_pin_clk(0);

if(mod){mc145162_pin_enb(0);}

}



2.mc145162.h源码文件

#include <misc.h>

/*

mc14bitsauxcount   : 16 ~ 16383

mc12bitsrefcount   : 16 ~ 4095

mctxcount       : 16 ~ 65535

mcrxcount       : 16 ~ 65535

*/

#define mc145162_base_pio           at
离线BG7YDO
发帖
3654
只看该作者 4楼 发表于: 2008-01-28
非常支持。
离线田鼠
发帖
235
只看该作者 5楼 发表于: 2012-04-04
'
抄收!谢谢!
最好再加上配套的功能显示及lsb\usb\cw\rtty\am\fm模式控制!
转一段无绳电话程序,看能否借鉴?
//****
#include <mc145162.h>
//---
uint8   mccontrolr;
uint16 mc14bitsauxcount;
uint16 mc12bitsrefcount;
uint16 mctxcount;
uint16 mcrxcount;
uint32 mc32bitsbuf;
#define mc145162_debug_out 1
//---
//mc145162初始化
void mc145162_mod_setup(void);
void mc145162_mod_reference(void);
void mc145162_tx_rx_counter(void);
void mc145162_ini(void)
{
mccontrolr       = 0x88;
mc14bitsauxcount   = 10240;
mctxcount       = 39983;
mcrxcount       = 45180;
mc145162_pin_install();
mc145162_mod_setup();
mc145162_mod_reference();
mc145162_tx_rx_counter();
}
//---
//发送control命令集
void mc145162_senddata(uint32 data,uint8 bits,uint8 mod);
void mc145162_mod_setup(void)
{
#define mc145162_test_bit_output 1
mc32bitsbuf = mccontrolr | 0x80;
#if mc145162_test_bit_output
mc32bitsbuf |= 0x20;
#endif
mc32bitsbuf <<= 24;
mc145162_pin_enb(1);
mc145162_senddata(mc32bitsbuf,8,false);
mc145162_pin_enb(0);
}
//---
//发送reference命令集
void mc145162_mod_reference(void)
{
if(mc14bitsauxcount > 16383)mc14bitsauxcount = 16383;
if(mc12bitsrefcount > 4095)mc12bitsrefcount = 4095;
if(mc14bitsauxcount <   16)mc14bitsauxcount = 16;
if(mc12bitsrefcount <   16)mc12bitsrefcount = 16;
#if mc145162_debug_out
{static char data[50];
sprintf(data,"mca=%d\r\n",mc14bitsauxcount);
dprintf(data);
}
#endif
#define mc145162_mod_reference_bit_aux (0x01           << 30)
#define mc145162_mod_reference_bit_tx0 (0x00           << 29)
#define mc145162_mod_reference_bit_rx0 (0x00           << 28)
#define mc145162_mod_reference_12b_ref (mc12bitsrefcount   << 16)
#define mc145162_mod_reference_bit_rs1 (0x00           << 15)
#define mc145162_mod_reference_bit_rs2 (0x00           << 14)
#define mc145162_mod_reference_bit_auxd(mc14bitsauxcount   << 0)
mc32bitsbuf =   mc145162_mod_reference_bit_aux |
mc145162_mod_reference_bit_tx0 |
mc145162_mod_reference_bit_rx0 |
mc145162_mod_reference_12b_ref |
mc145162_mod_reference_bit_rs1 |
mc145162_mod_reference_bit_rs2 |
mc145162_mod_reference_bit_auxd;
mc145162_pin_enb(1);
mc145162_senddata(mc32bitsbuf,32,false);
mc145162_pin_enb(0);
}
//---
//发送counter分频命令集
void mc145162_tx_rx_counter(void)
{
if(mctxcount < 16)mctxcount = 16;
if(mcrxcount < 16)mcrxcount = 16;
mc32bitsbuf = (mctxcount << 16) | mcrxcount;
#if mc145162_debug_out
{static char data[50];
sprintf(data,"mctxcount=%d\r\nmcrxcount=%d\r\n" ,mctxcount,mcrxcount);
dprintf(data);
}
#endif
mc145162_pin_enb(0);
mc145162_senddata(mc32bitsbuf,32,true);
}
//---
//数据发送子函数
void mc145162_senddata(uint32 data,uint8 bits,uint8 mod)
{uint8 i;
if(bits)bits--;
for(i = 0;i < bits;i++)
{
mc145162_pin_din(data&0x80000000);
mc145162_pin_clk(1)
mc145162_pin_clk(0);
data <<= 1;
}
mc145162_pin_din(data&0x80000000);
mc145162_pin_clk(1)
if(mod){mc145162_pin_enb(1);}
mc145162_pin_clk(0);
if(mod){mc145162_pin_enb(0);}
}
2.mc145162.h源码文件
#include <misc.h>
/*
mc14bitsauxcount   : 16 ~ 16383
mc12bitsrefcount   : 16 ~ 4095
mctxcount       : 16 ~ 65535
mcrxcount       : 16 ~ 65535
*/
#define mc145162_base_pio           at
'
好资料!
离线BD8CS
发帖
18941
只看该作者 6楼 发表于: 2012-04-05
这些可以用c?