·¢²¼Ê±¼ä : ÐÇÆÚÈý ÎÄÕÂÏÖ´ú½»»»ÔÀí¿ÎÉè - ͼÎĸüÐÂÍê±Ï¿ªÊ¼ÔĶÁb59aac3781c758f5f71f6729
Îå¡¢Õª/¹Ò»úʶ±ð³ÌÐòÁ÷³ÌͼÈçͼ
Áù¡¢ MATLAB³ÌÐò
#include
#define FIRST_BOARD_HOOK_ADDRESS 0x260
#define OFFHOOK_QUEUE_SIZE 16 #define ONHOOK_QUEUE_SIZE 16 #define SUM_BOARD_3 int i;
unsigned char UM_offhook; unsigned char Lm[1];
unsigned char Subs_Bit[8];
unsigned char OffHook_Queue[OFFHOOK_QUEUE_SIZE];
unsigned char OffHook_Spos,OffHook_Rpos,OffHook_Queue_Flag; unsinged char OnHook_Queue[ONHOOK_QUEUE_SIZE];
unsigned char OnHook_Spos,OnHook_Rpos,OnHook_Queue_Flag; unsigned char UM_OffHook_1,UM_OnHook_1; void ScanFirstBoard(void); main()
OffHook_Queue[0]=0; OffHook_Spos=0; OffHook_Rpos=0;
OffHook_Queue_Flag=0; OnHook_Queue[0]=0; OnHook_Spos=0; OnHook_Rpos=0;
OnHook_Queue_Flag=0; Lm[0]=0;
Subs_Bit[0]=0x01; Subs_Bit[1]=0x02; Subs_Bit[2]=0x04; Subs_Bit[3]=0x08; Subs_Bit[4]=0x10; Subs_Bit[5]=0x20; Subs_Bit[6]=0x40; Subs_Bit[7]=0x80; UM_OffHook_1=0; UM_OnHook_1=0; Outportb(0x369,0); clrscr();
printf(¡°Please offhook,check offhooksubscriber number.\\n¡±); printf(¡°Then onhook,checkonhooksubscriber number.\\n¡±); for(;;) {
If(kbhir()) Break; Delay(20);
ScanFirstBoard(); }
Return0; }
Void ScanFirstBoard() {
unsigned char Scn;
unsigned char NewScan_OffHook; unsigned char NewScan_OnHook; unsigned char OldLm;
unsigned char CurrentBoardNum; unsigned int JudgeWord; int i;
CurrentBoardNum=0x01;
Scn=inportb(FIRSR_BOARD_HOOK-ADDRESS)&0xff; JudgeWord=UM_OffHook_1 & Scn; i=7;
while(JudgeWord!=0) {
While((JudgeWord&Subs_Bir[i])!=Subs_Bit[i]) i--;
if(((OffHook_Spos+1)==OffHook_Rpos)||((OffHook_Spos==OFFHOOK_QUEUE_SIZE)&&(OffHook_Spos==0))) {
Printf(¡°OffHook_Queue is Full. Not Insert. \\ n¡±); } Else {
OffHook_Queue[OffHook_Spos]=i; printf(¡°OffHook_Queue:
BoardNum:%d,OffHook_Sub:%d\\n¡±,CurrentBoardNum,i+1); }
JudgeWord=JudgeWord&(~Subs_Bit[i]); i--; }
printf(¡°OffHook_Queue : %x\\n¡±,OffHook_Queue[OffHook_Spos]); NewScan_OffHook=Scn; OldLm=Lm[0];
UM_OffHook_1=NewScan_OffHook&(~OldLm); NewScan_OnHook=Scn;
JudgeWord=UM_OnHook_ 1 &(~NewScan_OnHook); i=7;
while(JudgeWord ! =0) {
While((JudgeWord&Subs_Bit[i])!=Subs_Bit[i] i--;
if(((OnHook_Spos+1)==OnHook_Rpos)||((OnHook_Spos==ONHOOK_QUEUE_SIZE)&&(OnHook_Rpos==0))) {
Printf(¡°OnHook_Queue is Full . Not Insert. \\n¡±); } else {
OnHook_Queue[OnHook_Spos]=i;
printf(¡°OnHook_Queue: %d,OnHook_Sub:%d \\n¡±, }
JudgeWord=JudgeWord&(~Subs_Bit[i]); i--; }
NewScan_OnHook=Scn; OldLm=Lm[0];
UM_OnHook_1=(~NesScan_OnHook)&OldLm; Lm[0]=Scn;}
Æß¡¢·ÂÕæͼ