找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6003|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[討論]關(guān)于12C887的中斷問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:14097 發(fā)表于 2009-6-11 10:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

#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不久。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表