QN8035汇编程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

#includep16f877a.inc__CONFIG_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_WDT_OFF&_RC_OSC;芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,1MRC振荡;用PIC16F877A试验QN8035收音机汇编程序。P模式,地址:001000000;经过几个月断断续续的编程和仿真,在FDF朋友的指点下终于完成了程序。;QQ:312431543;************************************定义查表偏移量INFEQU0H;F0TMR0EQU1H;F1PCLEQU2H;F2STATUSEQU3H;F3CEQU0;位的等值方法.DCEQU1ZEQU2PDEQU3TOEQU4RP0EQU5;A0RP1EQU6;A1IRPEQU7;A2FSREQU4H;F4TMR1LEQU0EHTMR1HEQU0FHT1CONEQU10HPIR1EQU0CHPIE1EQU8CHADCON1EQU9FHT1CONEQU10HINTCONEQU0BHTOIFEQU2POTION_REGEQU81HTRISAEQU85HTRISEEQU89HTRISBEQU86HTB2EQU2TRISCEQU87HTRISDEQU88HTRISEEQU89HPORTDEQU8HPORTAEQU5H;F5PA0EQU0;电源开关输出KETEQU1POWEQU2UPEQU3PORTBEQU6HDKEQU0SCLKEQU1;时钟信号,对应QN80359脚。SDAEQU2;数据信号,对应QN803510脚。YUPEQU4;加音量YDWONEQU5;减音量KUPEQU3;上收台KDWONEQU7;下收台PORTCEQU7HCOUNTEQU20HDATEQU22H;读出数据寄存器。TEMPEQU23H;写寄存器R0EQU24HR1EQU25HR2EQU26HR00HEQU27H;FM手动接收模式(11H)R01HEQU28H;外部时钟工作方式10000000设定信号强度。R0AHEQU29H;频率数据最高2位R07HEQU30H;频率低6位,CH=(F-60MHZ)/0.05MVOLUME0EQU0VOLUME1EQU1VOLUME2EQU2VOLUME3EQU3MONOEQU5;0=立体声,1=单声道R08HEQU31H;信号强度CCA,评估没有干扰的信道。R09HEQU32H;OBHEQU33H;RSSI,最小=000000,最大=1111111RSSIEQU7;信号强度高7位,但是要用35MS的读取时间反复读。FM_TRUEEQU0;当前频率是一个电台=1OBLEQU34H;用软件收台,准备=1,没准备好=0FM_READYEQU7;软件收台,1=收到了台,0=正在收台时或没收到台。R14HEQU35H;MUTE=1加重75US=1音量:101(-5DB--0DB)111(0DB---42DB)R14H7EQU7DATBEQU36HR16HEQU37HR17HEQU38HR46HEQU39HD07HEQU40H;--------------------------ORG000HNOP;放置一条ICD必需的空操作指令GOTOSTARTORG004H;-------------------------DL4USNOPNOPNOPNOPRETURN;-------------------------DL10MSMOVLW.13MOVWFR1DL10MS1MOVLW.255MOVWFR0DL10MS3DECFSZR0GOTODL10MS3DECFSZR1GOTODL10MS1RETURN;-------------------------DL100MSMOVLW.130MOVWFR1DL100MS1MOVLW0FFHMOVWFR0DL100MS2DECFSZR0GOTODL100MS2DECFSZR1GOTODL100MS1RETURN;*********************DL500MSMOVLW.255MOVWFR1DL500MS1MOVLW.255MOVWFR0DL500MS2DECFSZR0GOTODL500MS2DECFSZR1GOTODL500MS1RETURN;******************开始条件START24;BSFSTATUS,RP0;MOVLW8;MOVWFTRISB;BCFSTATUS,RP0NOPBSFPORTB,SDACALLDL4USBSFPORTB,SCLKCALLDL4USBCFPORTB,SDACALLDL4USBCFPORTB,SCLKRETURN;*****************停止条件STOPBCFPORTB,SDACALLDL4USBCFPORTB,SCLKCALLDL4USBSFPORTB,SCLKCALLDL4USBSFPORTB,SDA;BSFSTATUS,RP0;MOVLW.255;MOVWFTRISB;BCFSTATUS,RP0RETURN;*******************************************************************;************************************************************SUBS;写单个字节数据MOVWFTEMP;将要写的数据存于TEMPMOVLW08HMOVWFCOUNT;SH01RLFTEMPBTFSCSTATUS,CGOTOSH02BCFPORTB,SDAGOTOSH03SH02BSFPORTB,SDASH03CALLDL4USBSFPORTB,SCLKCALLDL4USBCFPORTB,SCLKDECFSZCOUNT,1;循环写完8位GOTOSH01BSFPORTB,SDABSFPORTB,SCLKREP;写的应答。BSFSTATUS,RP0BSFTRISB,2BCFSTATUS,RP0;BSFPORTB,SCLKBTFSCPORTB,SDA;判应答到否,未到则等待GOTO$-1;INCFR2;MOVFR2,W;MOVWFPORTDBCFPORTB,SCLKBSFSTATUS,RP0BCFTRISB,2BCFSTATUS,RP0;BCFPORTB,SCLK;等待插入时间。BCFPORTB,SDARETURN;******************读单个字节数据RD24BSFSTATUS,RP0BSFTRISB,2;BSFPOTION_REG,7;关闭RB口内部弱上拉BCFSTATUS,RP0CLRFDATMOVLW08H;共读8位数据MOVWFCOUNTRD0BSFPORTB,SCLK;读数据CALLDL4USBSFSTATUS,CBTFSSPORTB,SDABCF3,CRLFDATBCFPORTB,SCLKCALLDL4USDECFSZCOUNT,1;循环读完8位GOTORD0BSFSTATUS,RP0BCFTRISB,2;BCFPOTION_REG,7;开启RB口内部弱上拉BCFSTATUS,RP0MOVFDAT,W;将读的数据送入W中MOVWFR08HRETURN;**********************读出单个寄存器的数据格式READNCALLSTART24;启动I2CMOVLW.32;QN8035写的地址:0010000CALLSUBS;MOVLW16H;要读出数据的寄存器地址CALLSUBS;CALLSTOPCALLSTART24;启动I2CMOVLW.33;QN8035读的地址:00100001CALLSUBS;CALLRD24;读出寄存器数据MOVWFR16H;数据另存为CALLMACK2CALLSTOPRETURN;**********************接收所需要的各答应位MACK2;接收的最后位,要发送一个是应答。BSFPORTB,SDABSFPORTB,SCLKCALLDL4USBCFPORTB,SCLKCALLDL4USBCFPORTB,SDARETURN;######################写的启动操作,包含了:STARTWRITENCALLSTART24;写地址:0X20.MOVLW20H;CALLSUBS;先写入QN8035写地址码00100000RETURN;##########################################################################################STARTNOPNOPBCFSTATUS,RP1BSFSTATUS,RP0;定义RA口,RC,RB口全部为输出MOVLW07HMOVWFADCON1;设置RA口全部为普通数字IO口MOVLW0;MOVWFTRISBMOVWFPORTBMOVWFPORTDCLRW;BSFPOTION_REG,7;关闭RB口内部对VDD电源的三极管上拉。外置上偏电阻。BCFSTATUS,RP0CLRFR2MOVLW.20;000010100MOVWFR07H;频率:61MHMOVLW.135;MUET50US0DB1000011197HMUTEMOVWFR14H;****************************************************MAINCLRFPORTDCALLDL500MSCALLDL500MSCOMFPORTD;####################################初使化QN8035L00HCALLWRITEN;启动写程序MOVLW00H;寄存器地址CALLSUBS;MOVLW81H;10000001CALLSUBSCALLSTOPCALLDL10MSL01HCALLWRITEN;启动写程序MOVLW01H;时钟工作方式正弦波=1数字方波=0收台信号阀值5:0CALLSUBS;自动收台MOVLW80H;10000000CALLSUBS;80H10000000CALLSTOPL54HCALLWRITEN;MOVLW54H;CALLSUBS;MOVLW47H;CALLSUBSCALLSTOPL19HCALLWRITEN;MOVLW19H;CALLSUBS;MOVLW40H;CALLSUBSCALLSTOPL2DHCALLWRITEN;MOVLW02DHCALLSUBS;MOVLW0D6H;CALLSUBSCALLSTOPL43HCALLWRITEN;MOVLW43H;CALLSUBS;MOVLW10H;CALLSUBSCALLSTOPL00HA;自动收台设定。CALLWRITEN;(接收模式)(SEEK)(TUNE)MOVLW00H;CALLSUBS;MOVLW51H;01010001CALLSUBSCALLSTOP;L00HB;自动收台设定。CALLWRITEN;(接收模式)(SEEK)(TUNE)MOVLW00H;CALLSUBS;MOVLW11H;00100001CALLSUBSCALLSTOP;;#########################################以上是初使化程序的设置。L00HC;自动收台设定。CALLWRITEN;(接收模式)(SEEK)(TUNE)MOVLW00H;CALLSUBS;MOVLW11H;00010001CALLSUBSCALLSTOP;;L18H;CALLWRITEN;CCA中断当信号弱时静噪。;MOVLW18H;;CALLSUBS;;MOVLW70H;01110000产生1K的信号出来了。;MOVLW60H;01100000;CALLSUBS;CALLSTOP;00100000初使化;***********************设定自动收台最高,最低频率值L07HCALLWRITEN;启动写程序MOVLW07H;启点频率,可读可写

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功