发布时间 : 星期日 文章现代交换原理课设 - 图文更新完毕开始阅读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;}
七、仿真图