77·¶ÎÄÍø - רҵÎÄÕ·¶ÀýÎĵµ×ÊÁÏ·ÖÏíÆ½Ì¨

¹âÕÕÇ¿¶È²âÁ¿ÒÇ(3)

À´Ô´£ºÍøÂçÊÕ¼¯ ʱ¼ä£º2020-05-08 ÏÂÔØÕâÆªÎĵµ ÊÖ»ú°æ
˵Ã÷£ºÎÄÕÂÄÚÈݽö¹©Ô¤ÀÀ£¬²¿·ÖÄÚÈÝ¿ÉÄܲ»È«£¬ÐèÒªÍêÕûÎĵµ»òÕßÐèÒª¸´ÖÆÄÚÈÝ£¬ÇëÏÂÔØwordºóʹÓá£ÏÂÔØwordÓÐÎÊÌâÇëÌí¼Ó΢ÐźÅ:»òQQ£º ´¦Àí£¨¾¡¿ÉÄܸøÄúÌṩÍêÕûÎĵµ£©£¬¸ÐлÄúµÄÖ§³ÖÓëÁ½⡣µã»÷ÕâÀï¸øÎÒ·¢ÏûÏ¢

3.¿ØÖƳÌÐòÉè¼Æ

3.1 ¿ØÖƳÌÐòÉè¼ÆË¼Â·ËµÃ÷

³õʼ»¯8255оƬ£¬ÉèÖù¤×÷·½Ê½¿ØÖÆ×ÖΪ89£¨100010001B£©£¬¼´A¡¢B¿ÚΪÊä³ö£¬·Ö±ð¿ØÖÆLEDµÄ¶ÎÑ¡¡¢Î»Ñ¡£¬C¿ÚÊäÈë¡£ÏÂͼΪ¿ØÖÆ×Ö£º

ÒÔ²ÉÑùÎåÊ®´ÎΪһÖÜÆÚ£¬ÇóµÃÎåÊ®´Î²ÉÑùµÄ×ÜÖµ¡£È»ºó³ýÒÔ50£¬µÃµ½²ÉÑù50´ÎµÄƽ¾ùÖµ£¬´æÈëLastAD¡£ÔÚÿһ´Î²ÉÑù¹ý³ÌÖУ¬¶¼ÔÚPC»úºÍLEDÉÏÊä³öÉÏÒ»ÖÜÆÚ²ÉÑùת»¯µÃµ½µÄ¹âÕÕÇ¿¶È£¨µ¥Î»£ºÀÕ¿Ë˹£©¡£¾ßÌåת»¯¹ý³ÌΪ£º

²ÉÑùµÃµ½µÄÄ£ÄâÖµ¾­¹ýADת»¯ºóΪµçѹֵ£¬µçѹ·¶Î§Îª0-5V¡£¶ø¿¼Âǵ½Êµ¼ÊÉú»îÖУ¬Ò»°ãÕÕÃ÷Ϊ200lux£¬ÖصãÕÕÃ÷Ϊ300lux£¬ËùÒÔʵÑéÖпÉÏÔʾµÄ¹âÕÕÇ¿¶ÈΪ0-500lux¡£ÓÚÊDzο¼Á½ÕßÖ®¼äµÄÏßÐÔ¹ØÏµ£¬¶¨ÏÂÈëÏÂͼµÄ¹ØÏµ£º

ͼ10 µçѹ-¹âÕնȺ¯Êý(¼°¸±±¾º¯Êý)

×¢£º±¾ÊµÑ黹֯×÷ÁËÒ»¸ö5V¶ÔÓ¦300luxµÄ¸±±¾³ÌÐò¡£

3.2 ³ÌÐòÁ÷³Ìͼ

¿ªÊ¼ ³õʼ»¯8255 CX=50 ²ÉÑù£¬¼ÆËã²ÉÑù×ÜÖµ °ÙλÊý/ÕûÊý²¿·Ö ÈëBUF/BUFFER+4£¬ ʮλÊý/µÚһλСÊý ÈëBUF+1/BUFFER+6£¬ ¸öλÊý/µÚ¶þλСÊý ÈëBUF+2/BUFFER+7¡£ µ÷ÓÃDOSµÄ9ºÅ¹¦ÄÜÔÚPC»úÉÏÊä³öµçѹ¡£ ²ÉÑùƽ¾ùÖµËÍ8255£¬ 8255µÄPA¿Ú¶ÎÑ¡¡¢PB¿Úλѡ¡£ ÔÚLEDÉÏÊä³öһλÊý¾Ý£¬ λѡÊý¾ÝDATA2×óÒÆÒ»Î»¡£ ÖØ¸´Èý´ÎΪһ¸öÖÜÆÚ¡£ È»ºó»¹Ô­DATA2=0FEH¡£ ÑÓʱ£¬ i -- i=0? ¼ÌÐøÏÂÒ»´Î²ÉÑù Y ¼ÆËã²ÉÑùƽ¾ùÖµ N ³ÌÐòÇ¿ÖÆ¹Ø±Õ ½áÊø ͼ1-11 ³ÌÐòÁ÷³Ìͼ

3.3¿ØÖƳÌÐò

.MODEL TINY PCIBAR3 EQU 1CH ;8λI/O¿Õ¼ä»ùµØÖ·(Ëü¾ÍÊÇʵÑéÒǵĻùµØÖ·,ҲΪDMA & 32 BIT RAM°å¿¨ÉϵÄ8237Ìṩ»ùµØÖ·) Vendor_ID EQU 10EBH ;³§ÉÌIDºÅ Device_ID EQU 8376 ;É豸IDºÅ START2: CALL AD0809 XOR AH,AH ;²ÉÑùÖµÔÚALÖÐ,AHÇå0ºó£¬AX¼´Îª²ÉÑùÖµ ADD BX,AX ;BXΪ²ÉÑù×ÜÖµ CALL DISPLAY_PC

;ÔÚPC»úÉÏÏÔʾ½á¹û

CALL DISPLAY_LED

.STACK 100 .DATA

ADDR_0809 DW 00F0H LastAD DB 0 ;ÉÏÒ»´ÎADת»»Öµ IO_Bit8_BaseAddress DW ? BUFFER DB ' H . V$' msg0 DB 'BIOS²»Ö§³Ö·ÃÎÊPCI $' msg1 DB 'ÕÒ²»µ½Star PCI9052°å¿¨ $' msg2 DB'¶Á8λI/O¿Õ¼ä»ùµØÖ·Ê±³ö´í$' msg3 DB 'ADת»»½á¹û(ǰ±ßÊÇ16½øÖÆÊý,ºó±ßÊÇÊ®½øÖÆÊý): $'

COM_ADD DW 00E3H ;¿ØÖÆ¿ÚÆ«ÒÆÁ¿ PA_ADD DW 00E0H ;PA¿ÚÆ«ÒÆÁ¿ PB_ADD DW 00E1H ;PB¿ÚÆ«ÒÆÁ¿ PC_ADD DW 00E2H ;PC¿ÚÆ«ÒÆÁ¿ LED_DATA DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;0-9µÄÆß¶Î´úÂë±í SHIFT DB 0FEH ;ÓÃÓÚλѡ .CODE

START: MOV AX,@DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;¸ù¾ÝPCIÌṩµÄ»ùµØÖ·,½«Æ«ÒƵØÖ·×ª»¯ÎªÊµµØÖ· MOV AH,09H LEA DX,msg3 INT 21H CALL Init8255 ;³õʼ»¯8255A XOR AL,AL JMP START6

START1: MOV CX,50 ;²ÉÑùÎåÊ®´Î MOV BX,0 ;ÀÛ¼ÆÎåÊ®´Î²ÉÑùÖµ

;LEDÏÔʾÉÏÒ»´Î²ÉÑùµÄ½á¹ûLastAD LOOP START2 MOV AX,50 XCHG AX,BX DIV BL ;ÎåÊ®´ÎµÄƽ¾ùÖµ,BL=50,ƽ¾ùÖµÔÚALÖУ¬ÓàÊýÔÚAHÖÐ CMP AL,LastAD JZ START3

START6: MOV LastAD,AL

;LastADֵΪADת»»Öµ START3: CALL IfExit JZ START1 JMP Exit

AD0809 PROC NEAR MOV SI,CX MOV AL,0

MOV DX,ADDR_0809 OUT DX,AL

MOV DX,IO_Bit8_BaseAddress MOV CX,100 AD08091:IN AL,DX

LOOP AD08091

;ÑÓʱ,µÈ´ýADת»»Íê³É

MOV DX,ADDR_0809 IN AL,DX MOV CX,SI RET

AD0809 ENDP

ToChar PROC NEAR ;ת»¯Îª¿ÉÏÔʾµÄ16½øÖÆÊý ADD AL,'0' CMP AL,'9' JBE ToChar1 ADD AL,07H

ToChar1: RET ToChar ENDP

DISPLAY_PC PROC NEAR MOV SI,AX ;Ï൱ÓÚPUSH MOV DI,BX MOV AL,LastAD

;½«ADת»»Öµ¶ÁÈëAXÖÐ MOV AH,AL AND AL,0FH CALL ToChar MOV BUFFER + 1,AL MOV AL,AH AND AL,0F0H ROR AL,4 CALL ToChar MOV BUFFER,AL MOV AL,AH XOR AH,AH MOV BL,51

;255/5 (16½øÖƵÄ1 = 1/51V) DIV BL OR AL,'0'

;ת»¯Îª¿ÉÏÔʾµÄ10½øÖÆÊý MOV BUFFER + 4,AL

;ÕûÊý²¿·Ö MOV AL,10 MUL AH DIV BL OR AL,'0' MOV BUFFER + 6,AL

;µÚһλСÊý MOV AL,10 MUL AH DIV BL OR AL,'0' MOV BUFFER + 7,AL

;µÚ¶þλСÊý MOV DX,43 MOV AH,02H INT 10H ;¶¨Î»¹â±ê LEA DX,BUFFER MOV AH,09H INT 21H ;ÏÔʾ½á¹û MOV AX,SI ;Ï൱ÓÚPOP

MOV BX,DI RET

DISPLAY_PC ENDP

TO_LED PROC NEAR ;LEDÏÔʾ LEA BX,LED_DATA XLAT ;¾­´úÂë±íת»»ÎªÆß¶ÎLED±íÖеĶÎÂ룬AL=BX[AL] MOV DX,PA_ADD ;´Ó8255A µÄPA¿Ú¶ÁÈ¡Êý×ÖÁ¿,¶ÎÑ¡ OUT DX,AL MOV AL,SHIFT ;Æß¶ÎLEDµÄλѡ£¬0FEHѡȡ×îµÍλ£¬Î»Ñ¡ MOV DX,PB_ADD ;PB¿Úλѡ OUT DX,AL CALL DLTIME ;ÑÓʱ ROL AL,1

;Ïòǰѡȡ´ÎµÍλ£¬Î»Ñ¡ MOV SHIFT,AL MOV AL,0FFH

;½ûÖ¹ÏÔʾ,È«ÖÃΪÃð,·ÀÖ¹Êý×Ö´®Î» OUT DX,AL RET TO_LED ENDP

DISPLAY_LED PROC NEAR MOV SI,AX MOV DI,BX XOR AX,AX MOV AL,BUFFER + 7 SUB AL,30H CALL TO_LED

;ÔÚLEDÉÏÏÔʾÓÒÆðµÚһλÊý MOV AL,BUFFER + 6 SUB AL,30H CALL TO_LED

;ÏÔʾµÚ¶þλÊý MOV AL,BUFFER + 4 SUB AL,30H CALL TO_LED ;ÏÔʾµÚÈýλÊý MOV SHIFT,0FEH

;»Ö¸´SHIFTÔ­Öµ£¬Ó¦ÓÃÓÚÏÂÒ»´ÎÊä³ö MOV AX,SI MOV BX,DI RET

DISPLAY_LED ENDP

DLTime PROC NEAR MOV SI,CX MOV CX,1563 DLT: NOP ;¿Õ²Ù×÷£¬ÓÃÓÚÑÓʱ LOOP DLT

;Ñ­»·ÑÓʱ,ÑÓʱ1.25ms MOV CX,SI RET

DLTime ENDP

IfExit PROC NEAR MOV SI,AX MOV DI,DX MOV DL,0FFH MOV AH,06H INT 21H MOV AX,SI MOV DX,DI RET IfExit ENDP

InitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H ;ÇåÆÁ MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ InitPCI2 LEA DX,msg0 InitPCI1: MOV AH,09H INT 21H JMP Exit

InitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID

MOV SI,0 INT 1AH

JNC InitPCI3

;ÊÇ·ñ´æÔÚStar PCI9052°å¿¨ LEA DX,msg1 JMP InitPCI1 InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV AL,09H INT 1AH

;¶ÁÈ¡¸Ã¿¨PCI9052»ùµØÖ· JNC InitPCI4 LEA DX,msg2 JMP InitPCI1 InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RET InitPCI ENDP

Init8255 PROC NEAR MOV DX,COM_ADD MOV AL,89H

;A¡¢B¿ÚΪÊä³ö(¶ÎÑ¡£¬Î»Ñ¡)£¬C¿ÚÊäÈë OUT DX,AL MOV DX,PA_ADD

;LEDȫϨÃð MOV AL,0FFH OUT DX,AL RET Init8255 ENDP

ModifyAddress PROC NEAR ADD ADDR_0809,CX ;ADDR_0809=34F0H ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX RET

ModifyAddress ENDP Exit: MOV AH,4CH INT 21H END START

°Ù¶ÈËÑË÷¡°77cn¡±»ò¡°Ãâ·Ñ·¶ÎÄÍø¡±¼´¿ÉÕÒµ½±¾Õ¾Ãâ·ÑÔĶÁÈ«²¿·¶ÎÄ¡£Êղر¾Õ¾·½±ãÏ´ÎÔĶÁ£¬Ãâ·Ñ·¶ÎÄÍø£¬Ìṩ¾­µäС˵½ÌÓýÎÄ¿â¹âÕÕÇ¿¶È²âÁ¿ÒÇ(3)ÔÚÏßÈ«ÎÄÔĶÁ¡£

¹âÕÕÇ¿¶È²âÁ¿ÒÇ(3).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ£¬·½±ã¸´ÖÆ¡¢±à¼­¡¢ÊղغʹòÓ¡ ÏÂÔØÊ§°Ü»òÕßÎĵµ²»ÍêÕû£¬ÇëÁªÏµ¿Í·þÈËÔ±½â¾ö£¡
±¾ÎÄÁ´½Ó£ºhttps://www.77cn.com.cn/wenku/jiaoyu/1035714.html£¨×ªÔØÇë×¢Ã÷ÎÄÕÂÀ´Ô´£©

Ïà¹ØÍÆ¼ö£º

Copyright © 2008-2022 Ãâ·Ñ·¶ÎÄÍø °æÈ¨ËùÓÐ
ÉùÃ÷ :±¾ÍøÕ¾×ðÖØ²¢±£»¤ÖªÊ¶²úȨ£¬¸ù¾Ý¡¶ÐÅÏ¢ÍøÂç´«²¥È¨±£»¤ÌõÀý¡·£¬Èç¹ûÎÒÃÇ×ªÔØµÄ×÷Æ·ÇÖ·¸ÁËÄúµÄȨÀû,ÇëÔÚÒ»¸öÔÂÄÚ֪ͨÎÒÃÇ£¬ÎÒÃǻἰʱɾ³ý¡£
¿Í·þQQ£º ÓÊÏ䣺tiandhx2@hotmail.com
ËÕICP±¸16052595ºÅ-18
¡Á ×¢²á»áÔ±Ãâ·ÑÏÂÔØ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢²á»áÔ±ÏÂÔØ
ȫվÄÚÈÝÃâ·Ñ×ÔÓɸ´ÖÆ
×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£º QQ£º