最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

剛寫的一個PCF8563匯編程序,請教高手!!

作者:oscar126 欄目:單片機
剛寫的一個PCF8563匯編程序,請教高手。!
;***************************************************************
;PCF8563時鐘程序,不帶設(shè)置采用RT1602C液晶顯示                           
;***************************************************************
;===============================================================
;                  地址分配
;===============================================================
BITCNT DATA 30H     //I2C位計數(shù)器地址
BYTECNT DATA 31H     //I2C字節(jié)計數(shù)器地址
RTCADR DATA 32H      //RTC(PCF8563)在I2C上的地址
RTCREGADR DATA 33H    //RTC 單元地址(16個寄存器地址)
RECVDATBUF DATA 40H   //接收數(shù)據(jù)緩沖區(qū)
SENDDATBUF DATA 50H   //發(fā)送數(shù)據(jù)緩沖區(qū)
RT1602CBUF DATA 60H   //液晶顯示緩沖區(qū)
ACK BIT 20H              //接收數(shù)據(jù)非應(yīng)答標(biāo)志
;---------------------------------------------------------------
;                 端口位定義
;---------------------------------------------------------------
SDA BIT P3.6            //PCF8563
SCL BIT P3.7
;---------------------------------------------------------------
RS BIT P2.5             //RT1602C
RW BIT P2.6
E  BIT P2.7
;---------------------------------------------------------------
;===============================================================
;名稱:主程序
;描述:初始化程序,寫入時鐘,液晶顯示,讀出時鐘,報警設(shè)置,循環(huán)
;===============================================================
     ORG 0000H
     AJMP MAIN
     ORG 000BH           //定時器0的入口地址
     AJMP TIME0
     ORG 0013H           //INT1的入口地址
     AJMP ALARMINT
     ORG 0020H
MAIN:
     MOV SP,#70H         //堆棧指針
     MOV IP,#04H         //設(shè)置INT1中斷優(yōu)先級高
     LCALL SENDTIME         //寫入時鐘
;---------------------------------------------------------------
;          報警設(shè)置
;---------------------------------------------------------------
     MOV 50H,#10H        //10分鐘報警時刻送發(fā)送緩沖區(qū)
     MOV RTCADR,#0A2H     //送PCF8563在I2C的寫的地址
     MOV RTCREGADR,#09H  //取小時報警控制字節(jié)地址
     MOV BYTECNT,#1
     LCALL SENDDATA      //送報警信息     
    
GOAHEAD:
     LCALL READTIME      //讀出時鐘
     LCALL RT1602CDISP     //顯示時鐘
     LCALL D10MS
     AJMP GOAHEAD
;***************************************************************
;                   子程序
;***************************************************************
;===============================================================
;名稱:RT1602CDISP
;描述:40H開始的接收數(shù)據(jù)緩沖區(qū)數(shù)據(jù)移入到以60H開始的顯示緩沖區(qū)
;顯示緩沖區(qū)的內(nèi)容送RT1602C顯示
;===============================================================
RT1602CDISP:
;---------------------------------------------------------------
;將年月日時分秒星期存到顯示緩沖區(qū)
;60H-69H:2006090900:00:00'FRI'
;---------------------------------------------------------------     
;             初始化RT1602C
;--------------------------------------------------------------
      MOV P0,#00000001B    //清屏并光標(biāo)復(fù)位
      ACALL WORDER         //調(diào)用寫入命令子程序                                     
      MOV P0,#00111100B    //設(shè)置顯示模式,8位2行5*10點陣
      ACALL WORDER
      MOV P0,#00001100B    //顯示器開,光標(biāo)關(guān),光標(biāo)不閃爍
      ACALL WORDER
      MOV P0,#00000110B    //文字不動,光標(biāo)自動右移
      ACALL WORDER
;---------------------------------------------------------------            
      MOV 60H,#20H
      MOV 65H,#3AH   //':'ASCII代碼
      MOV 67H,#3AH   //':'ASCII代碼
      MOV A,46H
      MOV 61H,A
      MOV A,45H
      MOV 62H,A
      MOV A,43H
      MOV 63H,A
      MOV A,42H
      MOV 64H,A
      MOV A,41H
      MOV 66H,A
      MOV A,40H
      MOV 68H,A
      MOV A,44H
      MOV 69H,A
;--------------------------------------------------------------
;             RT1602C開始顯示程序
;--------------------------------------------------------------
      MOV P0,#81H   //年顯示地址,第一行第二位置開始
      ACALL WORDER
      MOV R5,60H    //'20'送R5
      ACALL BREAK
;--------------------------------------------------------------      
      MOV P0,#83H   //年顯示地址
      ACALL WORDER
      MOV R5,61H    //'06'
      ACALL BREAK
;--------------------------------------------------------------      
      MOV P0,#86H   //月顯示地址
      ACALL WORDER
    &n
2樓: >>參與討論
oscar126
我是初學(xué)者
下載到電路版上,顯示的是 2077 0< 27 TUE。
                            11:15:31

而且一直保持這樣的數(shù)據(jù),
我不知道問題出現(xiàn)在哪了,檢查了很久!還是檢查不出來,液晶顯示模塊沒問題!我調(diào)試過的。。。。所以拿進來請教下高手,本人不甚感激!

3樓: >>參與討論
oscar126
在線等。。。。。。
 
4樓: >>參與討論
stycx
有幾個問題
1、設(shè)置時間前須停止時鐘, 設(shè)置時間后才能啟動時鐘
2、設(shè)置時間的參數(shù)中,除星期外,都必須是bcd碼
3、用匯編效率低了點吧  

5樓: >>參與討論
oscar126
謝謝!真的好多問題!
匯編效率是低了點,,我現(xiàn)在正在學(xué)習(xí)C語言,不知道大家對學(xué)習(xí)C有什么好的建議??我還是在校的學(xué)生,,感覺有點迷茫

6樓: >>參與討論
stycx
設(shè)置時間前須停止時鐘, 設(shè)置時間后才能啟動時鐘
你的程序好像沒有吧

7樓: >>參與討論
oscar126
謝謝stycx!
我一開始調(diào)用寫入時鐘子程序,其中有啟動時鐘的指令
SENDPCF8563:
      MOV 50H,#00H     //啟動時鐘
      MOV 51H,#1FH     //設(shè)置報警及定時器中斷,定時器中斷為脈沖形式

你的意思是不是這之前要把時鐘停止?具體怎么設(shè)置?能說一下嗎?我找到的資料里好象沒有相關(guān)的介紹,謝謝了!



8樓: >>參與討論
oscar126
還有那個BCD碼。。。。。
那個BCD碼不就是用四位二進制表示1~9的十進制嗎?我好象沒寫錯啊,,請指教!謝謝~!

9樓: >>參與討論
stycx
8563芯片的手冊里頭就有說明
 
10樓: >>參與討論
stycx
給個8563的c函數(shù)庫你參考一下吧
/*
  CodeVisionAVR C Compiler
  (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.

  PHILIPS PCF8563 I2C bus Real Time Clock functions
*/

#include <i2c.h>
#include <bcd.h>

unsigned CHAR rtc_read(unsigned CHAR address)
{
unsigned CHAR d;
i2c_start();
i2c_write(0xa2);
i2c_write(address);
i2c_start();
i2c_write(0xa3);
d=i2c_read(0);
i2c_stop();
return d;
}

void rtc_write(unsigned CHAR address,unsigned CHAR data)
{
i2c_start();
i2c_write(0xa2);
i2c_write(address);
i2c_write(data);
i2c_stop();
}

void rtc_stop(void)
{
rtc_write(0,0x20);
}

void rtc_start(void)
{
rtc_write(0,0);
}

void rtc_init(unsigned CHAR ctrl2,unsigned CHAR clkout,unsigned CHAR timer_ctrl)
{
rtc_write(1,ctrl2);
rtc_write(0xd,clkout);
rtc_write(0xe,timer_ctrl);
rtc_start();
}

unsigned CHAR rtc_read_bcd(unsigned CHAR addr,unsigned CHAR mask)
{
return bcd2bin(rtc_read(addr) & mask);
}

void rtc_write_bcd(unsigned CHAR addr,unsigned CHAR data)
{
rtc_write(addr,bin2bcd(data));
}

unsigned CHAR rtc_get_time(unsigned CHAR *hour,unsigned CHAR *min,unsigned CHAR *sec)
{
unsigned CHAR d;
d=rtc_read(2);
*sec=bcd2bin(d & 0x7f);
if (d & 0x80) d=0; else d=1;
*min=rtc_read_bcd(3,0x7f);
*hour=rtc_read_bcd(4,0x3f);
return d;
}

void rtc_set_time(unsigned CHAR hour,unsigned CHAR min,unsigned CHAR sec)
{
rtc_stop();
rtc_write_bcd(2,sec);
rtc_write_bcd(3,min);
rtc_write_bcd(4,hour);
rtc_start();
}

void rtc_get_date(unsigned CHAR *date,unsigned CHAR *month,unsigned *year)
{
unsigned CHAR mc;
unsigned y=1900;
*date=rtc_read_bcd(5,0x3f);
mc=rtc_read(7);
*month=bcd2bin(mc & 0x1f);
if (mc & 0x80) y=2000;
*year=rtc_read_bcd(8,0xff)+y;
}

void rtc_set_date(unsigned CHAR date,unsigned CHAR month,unsigned year)
{
unsigned CHAR mc;
mc=bin2bcd(month);
if (year>=2000) mc|=0x80;
rtc_stop();
rtc_write_bcd(5,date);
rtc_write(7,mc);
rtc_write_bcd(8,year%100);
rtc_start();
}

void rtc_alarm_off(void)
{
rtc_write(9,rtc_read(9) | 0x80);
rtc_write(10,rtc_read(10) | 0x80);
rtc_write(11,rtc_read(11) | 0x80);
rtc_write(12,0x80);
}

void rtc_alarm_on(void)
{
unsigned CHAR d;
rtc_write(9,rtc_read(9) & 0x7f);
rtc_write(10,rtc_read(10) & 0x3f);
d=rtc_read(11) & 0x3f;
if (d==0) d|=0x80;
rtc_write(11,d);
}

void rtc_write_alarm(unsigned CHAR addr,unsigned CHAR data)
{
rtc_write(addr,bin2bcd(data) | 0x80);
}

void rtc_set_alarm(unsigned CHAR date,unsigned CHAR hour,unsigned CHAR min)
{
rtc_write_alarm(9,min);
rtc_write_alarm(10,hour);
rtc_write_alarm(11,date);
rtc_write(12,0x80);
}

void rtc_get_alarm(unsigned CHAR *date,unsigned CHAR *hour,unsigned CHAR *min)
{
*min=rtc_read_bcd(9,0x7f);
*hour=rtc_read_bcd(10,0x3f);
*date=rtc_read_bcd(11,0x3f);
}

void rtc_set_timer(unsigned CHAR val)
{
rtc_write(0xf,val);
}


11樓: >>參與討論
oscar126
恩,謝謝。。。
我參考的是標(biāo)有 廣州周立功單片機發(fā)展有限公司  的資料,8563的DATASHEET是英文的,,我就沒看了哈,,謝謝你提醒,也謝謝你提供8563的C函數(shù)!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求MEGA16學(xué)習(xí)范例
這個程序怎么不能工作呢?
尊重自己和他人勞動的人,才能被他人尊敬
一條書后習(xí)題
AT24C02的7腳懸空疑問?
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號