⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 radio.asm

📁 有时钟功能
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	tris	PA
	bcf	PCom0
	movf	LcdRAM00,0
	movwf	LcdRAMBuf0
	movf	LcdRAM01,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
	bsf	FLcdOff
;	bsf	FLcdHi
LcdLo1:
	movf	LcdDriveCnt,0
	xorlw	02h
	btfss	FZ
	goto	LcdLo2
	movlw	b'00001101'
	tris	PA
	bcf	PCom1
	movf	LcdRAM10,0
	movwf	LcdRAMBuf0
	movf	LcdRAM11,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
;	bsf	FLcdOff
;	bsf	FLcdHi
LcdLo2:
	movf	LcdDriveCnt,0
	xorlw	03h
	btfss	FZ
	goto	LcdLo3
	movlw	b'00001011'
	tris	PA
	bcf	PCom2
	movf	LcdRAM20,0
	movwf	LcdRAMBuf0
	movf	LcdRAM21,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
;	bsf	FLcdHi
LcdLo3:
	movf	LcdDriveCnt,0
	xorlw	04h
	btfss	FZ
	goto	LcdLo4
	movlw	b'00000111'
	tris	PA
	bcf	PCom3
	movf	LcdRAM30,0
	movwf	LcdRAMBuf0
	movf	LcdRAM31,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
	bsf	FLcdHi
	movlw	001h
	movwf	LcdDriveCnt
	bsf	FLcdOff
;	bsf	FLcdHi
LcdLo4:
	btfsc	FLcdHi
	goto	LcdDriveEnd
	incf	LcdDriveCnt,1
	goto	LcdDriveEnd
;*****************************
LcdHi:
LcdHi0:
	movf	LcdDriveCnt,0
	xorlw	01h
	btfss	FZ
	goto	LcdHi1
	movlw	b'00001110'
	tris	PA
	bsf	PCom0
	movlw	0ffh
	xorwf	LcdRAM00,0
	movwf	LcdRAMBuf0
	movlw	0ffh
	xorwf	LcdRAM01,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
	bsf	FLcdOff
;	bsf	FLcdOff
LcdHi1:
	movf	LcdDriveCnt,0
	xorlw	02h
	btfss	FZ
	goto	LcdHi2
	movlw	b'00001101'
	tris	PA
	bsf	PCom1
	movlw	0ffh
	xorwf	LcdRAM10,0
	movwf	LcdRAMBuf0
	movlw	0ffh
	xorwf	LcdRAM11,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
;	bsf	FLcdHi
LcdHi2:
	movf	LcdDriveCnt,0
	xorlw	03h
	btfss	FZ
	goto	LcdHi3
	movlw	b'00001011'
	tris	PA
	bsf	PCom2
	movlw	0ffh
	xorwf	LcdRAM20,0
	movwf	LcdRAMBuf0
	movlw	0ffh
	xorwf	LcdRAM21,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
	bsf	FLcdOff
;	bsf	FLcdHi
LcdHi3:
	movf	LcdDriveCnt,0
	xorlw	04h
	btfss	FZ
	goto	LcdHi4
	movlw	b'00000111'
	tris	PA
	bsf	PCom3
	movlw	0ffh
	xorwf	LcdRAM30,0
	movwf	LcdRAMBuf0
	movlw	0ffh
	xorwf	LcdRAM31,0
	movwf	LcdRAMBuf1
	call	CarryDataToSeg
	bcf	FLcdHi
	movlw	01h
	movwf	LcdDriveCnt
;	bsf	FLcdHi
LcdHi4:
	btfss	FLcdHi
	goto	LcdDriveEnd
	incf	LcdDriveCnt,1
	goto	LcdDriveEnd
LcdDriveEnd:
	Page0
	goto	LcdDriveRet
;*****************************
CarryDataToSeg:
	movf	LcdRAMBuf0,0
	movwf	PB
	movlw	0fch
	andwf	PC,1
	movlw	003h
	andwf	LcdRAMBuf1,0
	iorwf	PC,1
	retlw	0
;*****************************
ClearAllLcd:
	movlw	000h
	tris	PA
	clrf	PA
	tris	PB
	clrf	PB
	movlw	b'00000100'
	tris	PC
	movlw	0fch
	andwf	PC,1
	retlw	0
;*****************************

;*****************************
FillLcdRAM:
	Bank1
	clrf	LcdRAM00
	clrf	LcdRAM01
	clrf	LcdRAM10
	clrf	LcdRAM11
	clrf	LcdRAM20
	clrf	LcdRAM21
	clrf	LcdRAM30
	clrf	LcdRAM31
FillLed:
	btfss	FLedFlash
	goto	FillLedLoop
	btfsc	F500ms
	goto	FillHint
FillLedLoop:
	btfsc	FFMLed
	goto	DisFMLed
	btfsc	FAMLed
	goto	DisAMLed
	btfsc	FClockLed
	goto	DisClockLed
	btfsc	FAlarm1Led
	goto	DisAlarm1Led
	btfsc	FAlarm2Led
	goto	DisAlarm2Led
	goto	FillHint
DisFMLed:
;	Bank1
;	bsf	FLcdFM
	Bank2
	movf	FMData0,0
	movwf	BCDData0
	movf	FMData1,0
	movwf	BCDData1
	call	BCDCode
	goto	DisLedCom
DisAMLed:
;	Bank1
;	bsf	FLcdAM
	Bank2
	movf	AMData0,0
	movwf	BCDData0
	movf	AMData1,0
	movwf	BCDData1
	call	BCDCode
	goto	DisLedCom
DisClockLed:
;	Bank1
;	bsf	FLcdDOT
	Bank2
	movf	ClockHour,0
	movwf	BCDData1
	movf	ClockMin,0
	movwf	BCDData0
	call	BCDCode
	goto	DisLedCom
DisAlarm1Led:
;	Bank1
;	bsf	FLcdDOT
	Bank2
	movf	Alarm1Hour,0
	movwf	BCDData1
	movf	Alarm1Min,0
	movwf	BCDData0
	call	BCDCode
	goto	DisLedCom
DisAlarm2Led:
;	Bank1
;	bsf	FLcdDOT
	Bank2
	movf	Alarm2Hour,0
	movwf	BCDData1
	movf	Alarm2Min,0
	movwf	BCDData0
	call	BCDCode
	goto	DisLedCom
DisLedCom:
	Bank2
	movf	KiloBit,0
	goto	FillKiloLed
FillKiloLedRet:
	Bank2
	movf	HundBit,0
	goto	FillHundLed
FillHundLedRet:
	Bank2
	movf	TenBit,0
	goto	FillTenLed
FillTenLedRet:
	Bank2
	movf	OneBit,0
	goto	FillOneLed
FillOneLedRet:
	goto	FillHint
FillHint:
DisFMOrAM:
	Bank1
	btfss	FFM
	goto	DisAMLcd
DisFMLcd:
	bsf	FLcdFM
	goto	DisDOT
DisAMLcd:
	bsf	FLcdAM
	goto	DisDOT
DisDOT:
	btfss	FClockLed
	goto	NoDisDOT

	bcf	FLcdFM
	bcf	FLcdAM
	Bank3
	movlw	d'123'
	subwf	Timer1s,0
	Bank1
	btfss	FC
	bsf	FLcdDOT
	goto	FillLcdRAMEnd
NoDisDOT:
FillLcdRAMEnd:
	Page0
	goto	FillLcdRAMRet

FillKiloLed:
	call	FigureTab
	Bank1
	movwf	DataBuf0
	btfsc	DataBuf0,0
	bsf	FLcd1A
	btfsc	DataBuf0,1
	bsf	FLcd1B
	btfsc	DataBuf0,2
	bsf	FLcd1C
	btfsc	DataBuf0,3
	bsf	FLcd1D
	btfsc	DataBuf0,4
	bsf	FLcd1E
	btfsc	DataBuf0,5
	bsf	FLcd1F
	btfsc	DataBuf0,6
	bsf	FLcd1G
FillKiloLedEnd:
	goto	FillKiloLedRet
FillHundLed:
	call	FigureTab
	Bank1
	movwf	DataBuf0
	btfsc	DataBuf0,0
	bsf	FLcd2A
	btfsc	DataBuf0,1
	bsf	FLcd2B
	btfsc	DataBuf0,2
	bsf	FLcd2C
	btfsc	DataBuf0,3
	bsf	FLcd2D
	btfsc	DataBuf0,4
	bsf	FLcd2E
	btfsc	DataBuf0,5
	bsf	FLcd2F
	btfsc	DataBuf0,6
	bsf	FLcd2G
FillHundLedEnd:
	goto	FillHundLedRet
FillTenLed:
	call	FigureTab
	Bank1
	movwf	DataBuf0
	btfsc	DataBuf0,0
	bsf	FLcd3A
	btfsc	DataBuf0,1
	bsf	FLcd3B
	btfsc	DataBuf0,2
	bsf	FLcd3C
	btfsc	DataBuf0,3
	bsf	FLcd3D
	btfsc	DataBuf0,4
	bsf	FLcd3E
	btfsc	DataBuf0,5
	bsf	FLcd3F
	btfsc	DataBuf0,6
	bsf	FLcd3G
FillTenLedEnd:
	goto	FillTenLedRet
FillOneLed:
	call	FigureTab
	Bank1
	movwf	DataBuf0
	btfsc	DataBuf0,0
	bsf	FLcd4A
	btfsc	DataBuf0,1
	bsf	FLcd4B
	btfsc	DataBuf0,2
	bsf	FLcd4C
	btfsc	DataBuf0,3
	bsf	FLcd4D
	btfsc	DataBuf0,4
	bsf	FLcd4E
	btfsc	DataBuf0,5
	bsf	FLcd4F
	btfsc	DataBuf0,6
	bsf	FLcd4G
FillOneLedEnd:
	goto	FillOneLedRet

;=============================
	Org	400h
;=============================
InitAdjustBandTime:
	bsf	FBandAdjust
InitAdjustClockTime:
	bsf	FLedFlash
	bcf	F500ms
	Bank3
	movlw	CAdjustTime
	movwf	AdjustTime
	movlw	CTimer500ms
	movwf	Timer500ms
	retlw	0
BandInc:
;	bsf	FAutoOn
	call	InitAdjustBandTime
	btfss	FFM
	goto	IncAMBand
IncFMBand:
	Bank2
	movf	FMData0,0
	movwf	DataBuf0
	movf	FMData1,0
	movwf	DataBuf1

	movlw	CFMDataMax0
	subwf	FMData0,0
	btfss	FC
	decf	FMData1,1
	movlw	CFMDataMax1
	subwf	FMData1,0
	btfss	FC
	goto	IncFMBandLoop
	movf	DataBuf0,0
	movwf	FMData0
	movf	DataBuf1,0
	movwf	FMData1
	goto	KeyBandIncEnd	
IncFMBandLoop:
	movf	DataBuf0,0
	movwf	FMData0
	movf	DataBuf1,0
	movwf	FMData1

	bsf	FSendData
	movlw	01h
	addwf	FMData0,1
	movlw	00h
	btfsc	FC
	movlw	01h
	addwf	FMData1,1
	goto	KeyBandIncEnd
IncAMBand:
	Bank2
	movf	AMData0,0
	movwf	DataBuf0
	movf	AMData1,0
	movwf	DataBuf1

	movlw	CAMDataMax0
	subwf	AMData0,0
	btfss	FC
	decf	AMData1,1
	movlw	CAMDataMax1
	subwf	AMData1,0
	btfss	FC
	goto	IncAMBandLoop
	movf	DataBuf0,0
	movwf	AMData0
	movf	DataBuf1,0
	movwf	AMData1
	goto	KeyBandIncEnd
IncAMBandLoop:
	movf	DataBuf0,0
	movwf	AMData0
	movf	DataBuf1,0
	movwf	AMData1

	bsf	FSendData
	movlw	03h
	addwf	AMData0,1
	movlw	00h
	btfsc	FC
	movlw	01h
	addwf	AMData1,1

	Bank0
	movlw	01h
	addwf	AMAdjust0,1
	movlw	00h
	btfsc	FC
	movlw	01h
	addwf	AMAdjust1,1
;	goto	KeyBandIncEnd
	retlw	0
BandDec:
	btfss	FFM
	goto	DecAMBand
DecFMBand:
	call	InitAdjustBandTime
	Bank2
	movf	FMData0,0
	movwf	DataBuf0
	movf	FMData1,0
	movwf	DataBuf1

	movlw	CFMDataMin0+1
	subwf	FMData0,0
	btfss	FC
	decf	FMData1,1
	movlw	CFMDataMin1
	subwf	FMData1,0
	btfsc	FC
	goto	DecFMBandLoop
	movf	DataBuf0,0
	movwf	FMData0
	movf	DataBuf1,0
	movwf	FMData1
	goto	KeyBandDecEnd
DecFMBandLoop:
	movf	DataBuf0,0
	movwf	FMData0
	movf	DataBuf1,0
	movwf	FMData1
	bsf	FSendData
	movlw	01h
	subwf	FMData0,1
	movlw	00h
	btfss	FC
	movlw	01h
	subwf	FMData1,1
	goto	KeyBandDecEnd
DecAMBand:
	call	InitAdjustBandTime
	Bank2
	movf	AMData0,0
	movwf	DataBuf0
	movf	AMData1,0
	movwf	DataBuf1

	movlw	CAMDataMin0+1
	subwf	AMData0,0
	btfss	FC
	decf	AMData1,1
	movlw	CAMDataMin1
	subwf	AMData1,0
	btfsc	FC
	goto	DecAMBandLoop
	movf	DataBuf0,0
	movwf	AMData0
	movf	DataBuf1,0
	movwf	AMData1
	goto	KeyBandDecEnd
DecAMBandLoop:
	movf	DataBuf0,0
	movwf	AMData0
	movf	DataBuf1,0
	movwf	AMData1
	bsf	FSendData

	movlw	03h
	subwf	AMData0,1
	movlw	00h
	btfss	FC
	movlw	01h
	subwf	AMData1,1

	Bank0
	movlw	01h
	subwf	AMAdjust0,1
	movlw	00h
	btfss	FC
	movlw	01h
	subwf	AMAdjust1,1
	retlw	0	
KeyCheck:
	movlw	0ffh
	tris	PB
	movwf	PB
	movlw	007h	;003h
	tris	PC
	iorwf	PC,1
	movlw	CKeyReadDelay
	movwf	DataBuf0
KeyReadDelayLoop:
	decfsz	DataBuf0,1
	goto	KeyReadDelayLoop
	clrf	DataBuf0

	btfsc	FKeyPress
	goto	KeyUnpressCheck
KeyPressCheck:
	btfss	PKeyBand
	goto	DecKeyDelayTimePress
	btfss	PKeyBandInc
	goto	DecKeyDelayTimePress
	btfss	PKeyBandDec
	goto	DecKeyDelayTimePress
	btfss	PKeyVolInc
	goto	DecKeyDelayTimePress
	btfss	PKeyVolDec
	goto	DecKeyDelayTimePress
	btfss	PKeyBand1
	goto	DecKeyDelayTimePress
	btfss	PKeyBand2
	goto	DecKeyDelayTimePress
	btfss	PKeyBand3
	goto	DecKeyDelayTimePress
	btfss	PKeyBand4
	goto	DecKeyDelayTimePress
	btfss	PKeyBand5
	goto	DecKeyDelayTimePress
	goto	InitKeyDelayTime
DecKeyDelayTimePress:
	Bank1
	decfsz	KeyDelayTime,1
	goto	KeyCheckEnd

	bsf	FKeyPress
	btfss	PKeyBand
	goto	KeyBand
KeyBandRet:
	btfss	PKeyBandInc
	goto	KeyBandInc
KeyBandIncRet:
	btfss	PKeyBandDec
	goto	KeyBandDec
KeyBandDecRet:
	btfss	PKeyVolInc
	goto	KeyVolInc
KeyVolIncRet:
	btfss	PKeyVolDec
	goto	KeyVolDec
KeyVolDecRet:
	btfss	PKeyBand1
	goto	KeyBand1_P2
KeyBand1Ret:
	btfss	PKeyBand2
	goto	KeyBand2_P2
KeyBand2Ret:
	btfss	PKeyBand3
	goto	KeyBand3_P2
KeyBand3Ret:
	btfss	PKeyBand4
	goto	KeyBand4_P2
KeyBand4Ret:
	btfss	PKeyBand5
	goto	KeyBand5_P2
KeyBand5Ret:
	goto	InitKeyDelayTime
KeyUnpressCheck:
	btfss	PKeyBand
	goto	CntPressTime
	btfss	PKeyBandInc
	goto	CntPressTime
	btfss	PKeyBandDec
	goto	CntPressTime
	btfss	PKeyVolInc
	goto	CntPressTime
	btfss	PKeyVolDec
	goto	CntPressTime
	Bank1
	decfsz	KeyDelayTime,1
	goto	KeyCheckEnd
	bcf	FKeyPress
	goto	InitKeyDelayTime
CntPressTime:
	Bank3
	decfsz	KeyPressTime,1
	goto	InitKeyDelayTime
	movlw	CKeyPressTime
	movwf	KeyPressTime
	bcf	FKeyPress
	goto	InitKeyDelayTime
InitKeyDelayTime:
	Bank1
	movlw	CKeyDelayTime
	movwf	KeyDelayTime
	goto	KeyCheckEnd
KeyCheckEnd:
	movlw	00h
	tris	PB
	movlw	b'00000100'
	tris	PC
	Page0
	goto	KeyCheckRet
;-------------------------------------
KeyBand:
	bcf	FAutoOn
	bsf	FSendData
	btfss	FFM
	goto	BsetFM
BclrFM:
	bcf	FFM
	bcf	FFMLed
	bsf	PBand
	bsf	FAMLed
	bcf	FClockLed
	goto	KeyBandEnd
BsetFM:
	bsf	FFM
	bsf	FFMLed
	bcf	FAMLed
	bcf	PBand
	bcf	FClockLed
	goto	KeyBandEnd
KeyBandEnd:
	goto	KeyBandRet
;-------------------------------------
KeyBandInc:
	btfsc	PKeyBandDec
	goto	KeyBandIncOnly

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -