【正文】
V IN3L 2I N4V IN5L 3I N6V IN7L 4I N8VOUT16L 1O U T15VOUT14L 2O U T13VOUT12L 3O U T11VOUT10L 4O U T9U 3 1 T L P 5 2 1 4V IN1L 1I N2V IN3L 2I N4V IN5L 3I N6V IN7L 4I N8VOUT16L 1O U T15VOUT14L 2O U T13VOUT12L 3O U T11VOUT10L 4O U T9U 3 2 T L P 5 2 1 4A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19D IR1U 3 07 4L V C 2 45R 8 41 0KVCCD S P I N 0D S P I N 1D S P I N 2D S P I N 3D S P I N 4D S P I N 5D S P I N 6D S P I N 7IO P B 0IO P B 1IO P B 2IO P B 3IO P B 4IO P B 5IO P B 6IO P B 7V C C8 路開關(guān)量輸入IO I N E N8 路開關(guān)量鎖存輸出IO O U T C L KR E S E TR 1 014 .7 KGNDC L R1C L K111D31Q22D42Q53D73Q64D84Q95D135Q126D146Q157D177Q168D188Q19V C C20GND10U 3 57 4H C 2 7 3V C CGNDIO P B 0IO P B 1IO P B 2IO P B 3IO P B 4IO P B 5IO P B 6IO P B 7V IN1L 1I N2V IN3L 2I N4V IN5L 3I N6V IN7L 4I N8VOUT16L 1O U T15VOUT14L 2O U T13VOUT12L 3O U T11VOUT10L 4O U T9U 3 3 T L P 5 2 1 4V IN1L 1I N2V IN3L 2I N4V IN5L 3I N6V IN7L 4I N8VOUT16L 1O U T15VOUT14L 2O U T13VOUT12L 3O U T11VOUT10L 4O U T9U 3 4T L P 5 2 1 4G N D IN 1G N D IN 1O U T 0O U T 1O U T 2O U T 3O U T 4O U T 5O U T 6O U T 7V C CV C CR 9 63 00R 9 53 00R 9 43 00R 9 33 00R 1 003 00R 9 93 00R 9 83 00R 9 73 002 40 7 O 02 40 7 O 12 40 7 O 22 40 7 O 32 40 7 O 42 40 7 O 52 40 7 O 62 40 7 O 7V INR 1 105 .1 kR 1 115 .1 kR 1 125 .1 kR 1 135 .1 kR 1 145 .1 kR 1 155 .1 kR 1 165 .1 kR 1 175 .1 k開關(guān)量輸出IO P A 3IO P A 4IO P A 5IO I N E NIO O U T C L K開關(guān)量輸入DSPIN0DSPIN1DSPIN2DSPIN3DSPIN4DSPIN5DSPIN6DSPIN7T M S 3 2 0 L F 2 4 0 7 AI O P A 3I O P A 4I O P A 5C語言源程序 include int j,k。 main() { asm( setc SXM)。 // 抑制符號位擴(kuò)展 asm( clrc OVM)。 // 累加器中結(jié)果正常溢出 asm( clrc CNF)。 // B0被配置為數(shù)據(jù)存儲空間 asm( setc INTM)。 // 禁止所有中斷 SCSR1=0x81FE。 // CLKIN=10MHz, CLKOUT=4xCLKIN=40MHz WDCR=0x0E8。 // 不使能看門狗,可以用軟件禁止看門狗 IMR=0x0000。 // 禁止所有中斷 IFR=0x0FFFF。 // 清除全部中斷標(biāo)志, 寫 1清 0 MCRA=MCRAamp。0x00c7。 // IOPA3,IOPA4,IOPA5,IOPB端口配置為一般的 I/O功能, F240x的端口均為 8位, MCRA為 16位因此控制了 IOPA和IOPB的設(shè)置 PBDATDIR=0x00ff。 // IOPB端口設(shè)置為輸入方式 PADATDIR=(PADATDIRamp。0x0FF00)|0x0FF28。 //IOPA3,IOPA4,IOPA5 設(shè)置為輸出方式,且 IOINEN=1,選通 8路開關(guān)量輸入 while(1) { PBDATDIR=PBDATDIRamp。0x00ff。 k=PBDATDIRamp。0x00FF。 if(k==0x00FF) k=0。 else k=1。 if(k==1) { for(j=0。j3000。j++) 。 k=PBDATDIRamp。0x00FF。 if(k==0x00FF) k=0。 else k=1。 } if(k==1) { PADATDIR=(PADATDIRamp。0x0FF00)|0x0FF30。 PADATDIR=PADATDIRamp。0x0FF00。 //IOPA3,IOPA4,IOPA5 設(shè)置為輸出方式,且 IOOUTCLK=1,選通 8路開關(guān)量輸出 PADATDIR=PADATDIR|0x0FF28。 //IOPA3,IOPA4,IOPA5 設(shè)置為輸出方式,且 IOINEN=1,選通 8路開關(guān)量輸入 } } } //中斷服務(wù)程序直接返回 void interrupt nothing( ) { return。 }