#include <ABSACC.H> //cs接P2^7,wr、rd與8031一一對(duì)應(yīng)// #include <REG52.H> #define uchar unsigned char #define MCA XBYTE[0xff0a] /* 寄存器A */ #define MCB XBYTE[0xff0b] /* 寄存器B */ #define MCC XBYTE[0xff0c] /* 寄存器C */ #define MCD XBYTE[0xff0d] /* 寄存器D */ sbit uip_bit=ACC^7; uchar idata dt[6]={09,6,9,21,44,25}; /* 99/4/5 11:11:25 */ uchar at[6]={9,8,7,4,2,0}; /* 年、月、日、時(shí)、分、秒 的地址*/ uchar xdata *addr=0xff00; /* 片選地址 */ void init(void) { /* 初始化函數(shù) */ MCA=0x2f; /* 時(shí)鐘頻率為32.768kHz,中斷周期500ms */ ACC=MCC; /* 讀寄存器C,清零中斷請(qǐng)求標(biāo)志 */ ACC=MCD; /* 讀寄存器D,使VRT=1,數(shù)據(jù)有效 */ MCB=0x52; /* 允許中斷,時(shí)標(biāo)為BCD碼,24小時(shí)方式 */ EA=1; /* 開中斷 */ EX0=1; } void write_ds(void) { /* 寫時(shí)標(biāo)函數(shù) */ uchar i; MCB=0x80; /* 使set=1 */ 為什么這里不把B寄存器的內(nèi)容寫如ACC呢?? for(i=0;i<=6;i++) /* 置時(shí)標(biāo)初值 */ *(addr+at)=dt; } void read_ds(void) { /* 讀時(shí)標(biāo)函數(shù) */ uchar i; ACC=MCA;這里為什么又不設(shè)置A寄存器的內(nèi)容呢?? while(uip_bit); /* 判UIP位 */ for(i=0;i<6;i++) /* 讀時(shí)標(biāo)寄存器的值 */ dt=*(addr+at); } void main(void) { /* 主函數(shù) */ write_ds(); init(); read_ds(); while(1); } 還有為什么不設(shè)置CS、DS、AS、WR呢??
難道使用了片外地址之后就不用設(shè)置了嗎/那是不是直接與8031對(duì)應(yīng)的斷口連接起來(lái)就是了呢??高手指點(diǎn)一下,小弟我剛學(xué)51不久。 |