📄 lcp.lst
字号:
=1 746 ; This module services the real time interrupt
=1 747 ;
=1 748 ; Get a Real Time interrupt every 40 microseconds (from Timer 0)
=1 749 ;
=1 750 ; This routine generates a 40usec pulse which turns on a Triac (via an opto-isolator)
=1 751 ; The 10msec LINE half cycle is divided into 250 40usec 'slots'
=1 752 ; The position of the TurnON pulse will vary the phase angle of the power control
=1 753 ;
=1 754 ; The PC Host provides 6 "brightness" values, these are counted down each half-cycle
=1 755 ;
=1 756 ; The Triacs are on Port A bits [5:0]
=1 757 ; A Line zero-cross detector is on Port C bit 0
=1 758 ;
03CA =1 759 ServiceTimerRoutine:
03CA 907F9B =1 760 MOV DPTR, #PortC_Pins ; First check if we have just changes cycles
03CD E0 =1 761 MOVX A, @DPTR
03CE 907F96 =1 762 MOV DPTR, #PortA_OUT ; Will need this later
03D1 A204 =1 763 MOV C, LastCycle
03D3 30E001 =1 764 JNB ACC.0, PositiveCycle ; Need an XRL C, but we don't have one!
A51 MACRO ASSEMBLER LCP 25/07/99 18:37:13 PAGE 13
03D6 B3 =1 765 CPL C
03D7 =1 766 PositiveCycle:
03D7 4013 =1 767 JC SameCycle
03D9 =1 768 CycleChange:
03D9 A2E0 =1 769 MOV C, ACC.0 ; Retreive current cycle
03DB 9204 =1 770 MOV LastCycle, C ; Save it for next time
03DD E4 =1 771 CLR A
03DE F0 =1 772 MOVX @DPTR, A ; Ensure all TurnON signals are low
03DF 7847 =1 773 MOV R0, #LightValues
03E1 794D =1 774 MOV R1, #WorkingValues
03E3 7F06 =1 775 MOV R7, #6
03E5 E6 =1 776 CCLoop: MOV A, @R0 ; Get the Light Values
03E6 F4 =1 777 CPL A ; Since we count down
03E7 F7 =1 778 MOV @R1, A ; Update the Working Values
03E8 08 =1 779 INC R0
03E9 09 =1 780 INC R1
03EA DFF9 =1 781 DJNZ R7, CCLoop ; Copy all six values
03EC =1 782 SameCycle: ; Check to see if any counters have expired
03EC 784D =1 783 MOV R0, #WorkingValues
03EE 755300 =1 784 MOV Mask, #0 ; Allow for XCH
03F1 7420 =1 785 MOV A, #00100000b ; Turn on signal for a Triac
03F3 =1 786 NextTriac:
03F3 C553 =1 787 XCH A, Mask ; Accumulate TurnON signals in A
03F5 8640 =1 788 MOV Temp, @R0
03F7 D54002 =1 789 DJNZ Temp, KeepOFF
03FA 4553 =1 790 ORL A, Mask ; Set a TurnON bit
03FC A640 =1 791 KeepOFF:MOV @R0, Temp
03FE 08 =1 792 INC R0 ; Ready for next loop
03FF C553 =1 793 XCH A, Mask
0401 03 =1 794 RR A ; Rotate Mask pattern
0402 70EF =1 795 JNZ NextTriac
0404 E553 =1 796 MOV A, Mask ; Retrieve TurnON pattern
0406 F0 =1 797 MOVX @DPTR, A ; TurnON triac(s) if required
0407 22 =1 798 RET
=1 799
800
801 END
A51 MACRO ASSEMBLER LCP 25/07/99 18:37:13 PAGE 14
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC . . . . . . . . . . . D ADDR 00E0H A
B . . . . . . . . . . . . D ADDR 00F0H A
BADREQUEST. . . . . . . . C ADDR 01C2H A
BUMPDPTR. . . . . . . . . C ADDR 01C8H A
BUTTONSVALUE. . . . . . . D ADDR 0047H A
CCLOOP. . . . . . . . . . C ADDR 03E5H A
CLEARINT2 . . . . . . . . C ADDR 0119H A
COMMANDTABLE. . . . . . . C ADDR 01F6H A
CONFIGLENGTH. . . . . . . N NUMB 001BH A
CONFIGURATION0. . . . . . C ADDR 0267H A
CONFIGURATION1. . . . . . C ADDR 0263H A
CONFIGURATIONDESCRIPTOR . C ADDR 02D3H A
CONFIGURED. . . . . . . . B ADDR 0020H.0 A
COPYOR. . . . . . . . . . C ADDR 03C3H A
COPYRB. . . . . . . . . . C ADDR 019CH A
COPYSD. . . . . . . . . . C ADDR 02B3H A
CORRECTSUBROUTINE . . . . C ADDR 01D1H A
CREATEINPUTREPORT . . . . C ADDR 03CAH A
CURRENTCONFIGURATION. . . D ADDR 0046H A
CURRENTPOSITION . . . . . D ADDR 0047H A
CYCLECHANGE . . . . . . . C ADDR 03D9H A
DECONFIGURED. . . . . . . C ADDR 0274H A
DEVICEDESCRIPTOR. . . . . C ADDR 02C1H A
DEVICE_CLEAR_FEATURE. . . C ADDR 0236H A
DEVICE_GET_STATUS . . . . C ADDR 0263H A
DEVICE_SET_FEATURE. . . . C ADDR 0236H A
DISPLAYPOSITION . . . . . D ADDR 0048H A
DPH . . . . . . . . . . . D ADDR 0083H A
DPL . . . . . . . . . . . D ADDR 0082H A
DPS . . . . . . . . . . . D ADDR 0086H A
EI. . . . . . . . . . . . D ADDR 00A8H A
EICON . . . . . . . . . . D ADDR 00D8H A
EIE . . . . . . . . . . . D ADDR 00E8H A
ENDOFDESCRIPTORS. . . . . C ADDR 0353H A
ENDPOINT_CLEAR_FEATURE. . C ADDR 0238H A
ENDPOINT_GET_STATUS . . . C ADDR 0267H A
ENDPOINT_SET_FEATURE. . . C ADDR 0236H A
ENDPOINT_SYNC_FRAME . . . C ADDR 0236H A
EP0CONTROL. . . . . . . . N NUMB 7FB4H A
EP0INBUFFER . . . . . . . N NUMB 7F00H A
EP0IN_ISR . . . . . . . . C ADDR 0118H A
EP0OUTBUFFER. . . . . . . N NUMB 7EC0H A
EP0OUT_ISR. . . . . . . . C ADDR 0118H A
EP1INBUFFER . . . . . . . N NUMB 7E80H A
EP1IN_ISR . . . . . . . . C ADDR 0118H A
EP1OUT_ISR. . . . . . . . C ADDR 0118H A
EP2IN_ISR . . . . . . . . C ADDR 0118H A
EP2OUT_ISR. . . . . . . . C ADDR 0118H A
EP3IN_ISR . . . . . . . . C ADDR 0118H A
EP3OUT_ISR. . . . . . . . C ADDR 0118H A
EP4IN_ISR . . . . . . . . C ADDR 0118H A
EP4OUT_ISR. . . . . . . . C ADDR 0118H A
EP5IN_ISR . . . . . . . . C ADDR 0118H A
EP5OUT_ISR. . . . . . . . C ADDR 0118H A
EP6IN_ISR . . . . . . . . C ADDR 0118H A
EP6OUT_ISR. . . . . . . . C ADDR 0118H A
EP7IN_ISR . . . . . . . . C ADDR 0118H A
EP7OUT_ISR. . . . . . . . C ADDR 0118H A
EXIF. . . . . . . . . . . D ADDR 0091H A
EXITISR . . . . . . . . . C ADDR 014FH A
A51 MACRO ASSEMBLER LCP 25/07/99 18:37:13 PAGE 15
EXPIRED_TIME. . . . . . . D ADDR 0042H A
FIXUPTHENREPLY. . . . . . C ADDR 02ADH A
FLAGS . . . . . . . . . . D ADDR 0020H A
GET_CLASS_DESCRIPTOR. . . C ADDR 029BH A
GET_CONFIGURATION . . . . C ADDR 0260H A
GET_DESCRIPTOR. . . . . . C ADDR 0277H A
GET_IDLE. . . . . . . . . C ADDR 0259H A
GET_INTERFACE . . . . . . C ADDR 0236H A
GET_PROTOCOL. . . . . . . C ADDR 0236H A
GET_REPORT. . . . . . . . C ADDR 024CH A
HANDSHAKE . . . . . . . . C ADDR 01A9H A
HIDDESCRIPTOR . . . . . . C ADDR 02E5H A
I2CCONTROL. . . . . . . . N NUMB 7FA5H A
I2CDATA . . . . . . . . . N NUMB 7FA6H A
I2CDATABYTE . . . . . . . D ADDR 0047H A
I2C_ISR . . . . . . . . . C ADDR 0118H A
IDLE_TIME . . . . . . . . D ADDR 0041H A
IN07IEN . . . . . . . . . N NUMB 7FACH A
IN07IRQ . . . . . . . . . N NUMB 7FA9H A
IN0BYTECOUNT. . . . . . . N NUMB 7FB5H A
IN1BYTECOUNT. . . . . . . N NUMB 7FB7H A
INITIALIZEINTERRUPTSYSTEM C ADDR 0390H A
INITIALIZEIOSYSTEM. . . . C ADDR 036BH A
INT0_ISR. . . . . . . . . C ADDR 0118H A
INT1_ISR. . . . . . . . . C ADDR 0118H A
INT4_ISR. . . . . . . . . C ADDR 0118H A
INT5_ISR. . . . . . . . . C ADDR 0118H A
INT6_ISR. . . . . . . . . C ADDR 0118H A
INTERFACEDESCRIPTOR . . . C ADDR 02DCH A
INTERFACE_CLEAR_FEATURE . C ADDR 0236H A
INTERFACE_GET_STATUS. . . C ADDR 0267H A
INTERFACE_SET_FEATURE . . C ADDR 0236H A
INVALID . . . . . . . . . C ADDR 0236H A
ISDESCRIPTOR. . . . . . . B ADDR 0020H.3 A
KEEPOFF . . . . . . . . . C ADDR 03FCH A
LASTCYCLE . . . . . . . . B ADDR 0020H.4 A
LEDBUFFER . . . . . . . . D ADDR 0049H A
LEDSTROBE . . . . . . . . D ADDR 0048H A
LEDVALUE. . . . . . . . . D ADDR 0049H A
LIGHTINGCONTROLPANEL. . . N NUMB -----
LIGHTVALUES . . . . . . . D ADDR 0047H A
LIMITVALUES . . . . . . . D ADDR 0047H A
LOADSUDPTR. . . . . . . . C ADDR 01B4H A
MAIN. . . . . . . . . . . C ADDR 03A8H A
MASK. . . . . . . . . . . D ADDR 0053H A
MONITORSPACE. . . . . . . D ADDR 0021H A
MORE. . . . . . . . . . . C ADDR 03B1H A
MOTORCONTROL. . . . . . . D ADDR 0048H A
MSEC_COUNTER. . . . . . . D ADDR 004AH A
NEXTDPTR. . . . . . . . . C ADDR 01C7H A
NEXTSTRING. . . . . . . . C ADDR 028DH A
NEXTTRIAC . . . . . . . . C ADDR 03F3H A
NOTB5 . . . . . . . . . . C ADDR 017DH A
NOT_USED. . . . . . . . . C ADDR 0118H A
OLD_BUTTONS . . . . . . . D ADDR 0047H A
OUT07IEN. . . . . . . . . N NUMB 7FADH A
OUT07IRQ. . . . . . . . . N NUMB 7FAAH A
OUT0BYTECOUNT . . . . . . N NUMB 7FC5H A
OVERLAY . . . . . . . . . D ADDR 0047H A
PAGEREG . . . . . . . . . D ADDR 0092H A
PCON. . . . . . . . . . . D ADDR 0087H A
PORTA_CONFIG. . . . . . . N NUMB 7F93H A
PORTA_OE. . . . . . . . . N NUMB 7F9CH A
PORTA_OUT . . . . . . . . N NUMB 7F96H A
PORTA_PINS. . . . . . . . N NUMB 7F99H A
PORTB_CONFIG. . . . . . . N NUMB 7F94H A
A51 MACRO ASSEMBLER LCP 25/07/99 18:37:13 PAGE 16
POR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -