亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lampe.asm

?? CCP1模塊使用的有關PIC應用程序Trabicom On Board Engine Controller
?? ASM
?? 第 1 頁 / 共 2 頁
字號:
; ******************************************************************************
; * Programm zur Steuerung der Halogenlampe
; * erstellt im August 2002 von Hannes Studeny
; *
; * Taktrate: 4 MHz --> 1 Mio Befehle pro Sekunde -->  1 Befehl ben鰐igt 1 Microsekunde
; ******************************************************************************
; *
; * Funktionalit鋞:
; * ===============
; * an RA0 wird die Spannung des Akkus gemessen
; * an RC2 wird ein PWM Signal, in Abh鋘gigkeit der gemessenen Spannung, erzeugt.
; * an RB2 wird der Taster angeschlossen
; * mit dem Taster wird die Lampe durch einen langen Tastendruck (mehr als 5 Sekunden) ein- bzw. ausgeschaltet
; * wenn die Lampe eingeschaltet ist, kann durch kurze Tastendr點ke (1 bis 2,5 Sekunden) zwischen folgenden
; * Modi gewechselt werden:
; * 	100%
; * 	80%
; * 	50%
; * 	SOS
; *
; * am A/D Wandler k鰊nen Spannungen von 15V bis 10V gemessen werden
; * werden weniger als 11,3 Volt gemessen, wird die Lampe automatisch abgeschaltet (PWM wird auf 0% eingestellt).
; * werden mehr als 12 Volt gemessen, regelt der PWM Ausgang die Spannung auf 12 Volt herunter
; *
; *
; * Programmablauf:
; * ===============
; * zuerst wird das PWM-Modul und der AD-Wandler initialisiert
; * in einer Endlosschleife erfolgt folgende Verarbeitung:
; * 	1. die Akku-Spannung wird gemessen
; * 	2. der PWM Output wird angepasst
; * 	3. der Taster wird abgefragt und entsprechend verarbeitet
; *
; * die Ausgangsspannung vom OpAmp errechnet sich folgendermassen:
; *	Ua = 2/3*Ue - 5
; * 15V entsprechen 5V und 10V entsprechen 1,67V
; *
; * Ua = 5/256*ADRESH
; * Ue = (Ua+5)*3/2
; * PWM = 12 / Ue
; * CCPR1L = 249*PWM
; *

	list p=16f870
	include	"p16f870.inc"

;	__CONFIG	_CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_ON & _LVP_OFF & _BODEN_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

; #define DEBUG

; ****************
; *** Definitionen
; ****************

BIT_ARRAY		equ	0x20
CCPR1L_TMP		equ	0x21
SOS_COUNTER		equ	0x22
BIT_ARRAY2		equ	0x23
BLINK_COUNTER		equ	0x24
LOWBAT_COUNTER		equ	0x25

W_TEMP			equ	0x28
STATUS_TEMP		equ     0x2A
PCLATH_TEMP         	equ     0x2B
FSR_TEMP		equ     0x2C
COUNTER_TMR0		equ	0x2D

d1			equ	0x2E
d2			equ	0x2F
d3			equ	0x30

PIN_TASTER		equ	0
PWM_OUT			equ	2
ON_OFF			equ	3
LOWBAT			equ	4
BLINKEN			equ	5

LED_GREEN		equ	1
LED_RED			equ	2


BIT_LED100		equ	0
BIT_LED80		equ	1
BIT_LED50		equ	2
BIT_LEDSOS		equ	3
BIT_ONOFF		equ	4
BIT_TASTER		equ	5
BIT_TASTER_LONG		equ	6

BIT_BLINKEN		equ 	0
BIT_LOWBAT		equ	1

PROZENT_100		equ 	D'249'
PROZENT_80		equ	D'199'
PROZENT_50		equ 	D'125'

COUNTER_VALUE_BLINK	equ	D'40'
COUNTER_VALUE_LOWBAT	equ	D'30'

; Ziele
w	equ	 0		; W-Register ist Zielregister
f	equ	 1		; f-Register ist Zielregister

; *********************
; *** Macrodefinitionen
; *********************

BANK_0	macro			; Select Bank 0
	bcf	STATUS,RP0
	bcf	STATUS,RP1
	errorlevel +302
	endm

BANK_1	macro			; Select Bank 1
	bsf	STATUS,RP0
	bcf	STATUS,RP1
	endm

BANK_2	macro			; Select Bank 2
	bcf	STATUS,RP0
	bsf	STATUS,RP1
	endm

BANK_3	macro			; Select Bank 3
	bsf	STATUS,RP0
	bsf	STATUS,RP1
	endm

; *******************************************************
; *** hier beginnt das eigentliche Programm
; *******************************************************

	org		0x00
	goto		main
	org		0x04
; hier steht die Interruptroutine
	; PROLOG
	movwf	W_TEMP
	swapf	STATUS,w
	clrf	STATUS
	movwf	STATUS_TEMP
	movf	PCLATH,w
	movwf	PCLATH_TEMP
	clrf	PCLATH
	bcf	STATUS,IRP
	movf	FSR,w
	movwf	FSR_TEMP

	BANK_0

	btfsc	INTCON,T0IF
	call	TIMER0_INTERRUPT

	btfsc	INTCON,INTF
	call	PORT_CHANGE_INTERRUPT

	btfsc	PIR1,TMR1IF
	call	TEST_OP_AMP

INTERRUPT_EPILOG
	movf	PCLATH_TEMP,w
	movwf	PCLATH
	swapf	STATUS_TEMP,w
	movwf	STATUS
	swapf	W_TEMP,f
	swapf	W_TEMP,w
	retfie

main
; jetzt gehts erst so richtig los...


	BANK_1
	errorlevel -302
	bcf	TRISC,PWM_OUT	; 0...Output
	bcf	TRISC,ON_OFF
	bsf	TRISC,LOWBAT	; 1...Input
	bsf	TRISC,BLINKEN
	BANK_0

	call	LAMP_OFF

	clrf	PORTB         	; PORTB initialisieren
	clrf	BIT_ARRAY
	clrf	BIT_ARRAY2

	movlw	COUNTER_VALUE_BLINK
	movwf	BLINK_COUNTER
	movlw	COUNTER_VALUE_LOWBAT
	movwf	LOWBAT_COUNTER

 	call InitPwm

	BANK_1
	errorlevel -302
	clrf	TRISB			; alle Pins von PORTB ausser RB0 als Output definieren
	bsf	TRISB,PIN_TASTER	; 1...Input

	bcf	OPTION_REG,T0CS		; internal Cycle clock for Timer0
	bcf	OPTION_REG,NOT_RBPU     ; activate Pullups on RBx
	bcf	OPTION_REG,PSA		; assign prescaler to Timer0
	bcf	OPTION_REG,INTEDG	; Interrupt on falling edge of RB0
 ifdef DEBUG
	bsf	OPTION_REG,PSA	; assign prescaler to WDT
	bcf	OPTION_REG,PS2	; prescaler rate 1:1
	bcf	OPTION_REG,PS1
	bcf	OPTION_REG,PS0
 else
	bsf	OPTION_REG,PS2	; prescaler rate 1:256
	bsf	OPTION_REG,PS1
	bsf	OPTION_REG,PS0
 endif
	BANK_0

; ************ TIMER1 Initialisieren
	bsf	T1CON,TMR1ON	; Timer1 einschalten
	BANK_1
	bsf	PIE1,TMR1IE	; Timer1 Interrupt enablen
	BANK_0

	clrf	INTCON		; zuerst alle Interrupts deaktivieren und l鰏chen
	bsf	INTCON,INTE	; Interrupt an RB0 aktivieren
	bsf	INTCON,PEIE	; f黵 Timer1 Interrupt notwendig
	bsf	INTCON,GIE	; globales Interrupt enable Bit

	movlw	D'0'
	movwf	CCPR1L

	bsf	PORTB,LED_GREEN	; test
	call	Delay1
	bcf	PORTB,LED_GREEN	; test
	bsf	PORTB,LED_RED	; test
	call	Delay1
	bcf	PORTB,LED_RED	; test


LOOP
	; call	TEST_OP_AMP	wir als Interrupt gel鰏t

	btfsc	BIT_ARRAY2,BIT_BLINKEN
	call	LAMP_BLINKEN

	btfsc	BIT_ARRAY2,BIT_LOWBAT
	call	LAMP_LOWBAT

	btfss	BIT_ARRAY,BIT_ONOFF
	goto	LOOP

	btfsc	BIT_ARRAY,BIT_LEDSOS
	call	SOS_MODE

	btfss	BIT_ARRAY,BIT_ONOFF
	call	LAMP_OFF

	bcf	BIT_ARRAY,BIT_TASTER
	goto	LOOP


LAMP_LOWBAT
	bcf	INTCON,GIE	; keine Interrupts (Schalter) mehr zulassen
	bsf	PORTB,LED_RED
	call	RESET

	bsf	PORTB,LED_GREEN	; test
ENDE
	bcf	PORTB,LED_GREEN
	bcf	INTCON,GIE
	call	LAMP_OFF
	goto	ENDE


; *********************************************************************************
; * nur wenn der Schwellenwert 5 mal hintereinander unterschritten wird, gilt er...
; *********************************************************************************

TEST_OP_AMP
	bcf	PIR1,TMR1IF			; Interruptflag Timer0 wieder l鰏chen

	btfsc	PORTC,BLINKEN
	goto	TEST_OP_BLINKEN
	movlw	COUNTER_VALUE_BLINK
	movwf	BLINK_COUNTER

TEST_OP_AMP_1
	btfsc	PORTC,LOWBAT
	goto	TEST_OP_LOWBAT
	movlw	COUNTER_VALUE_LOWBAT
	movwf	LOWBAT_COUNTER

TEST_OP_AMP_2
	btfsc	BIT_ARRAY,BIT_LEDSOS		; bei SOS gibt es kein Blinken wegen Low-Bat
	bcf	BIT_ARRAY2,BIT_BLINKEN

	return


TEST_OP_BLINKEN
	decfsz	BLINK_COUNTER,f
	goto	TEST_OP_AMP_1
	bsf	BIT_ARRAY2,BIT_BLINKEN
	goto	TEST_OP_AMP_1


TEST_OP_LOWBAT
	decfsz	LOWBAT_COUNTER,f
	goto	TEST_OP_AMP_2
	bsf	BIT_ARRAY2,BIT_LOWBAT
	goto	TEST_OP_AMP_2


; **************************************************************************************

LAMP_BLINKEN
	bsf	PORTB,LED_GREEN
	btfss	BIT_ARRAY,BIT_ONOFF	; Lampe ist ausgeschaltet
	return

	call	LAMP_OFF

	call	Delay10

	call	LAMP_ON
	call 	Delay1
	call	TEST_OP_AMP
	call 	Delay1
	call	TEST_OP_AMP
	call 	Delay1
	call	TEST_OP_AMP

	return


;************************************************
;* Lampe ausschalten
;************************************************
LAMP_OFF
	bsf	PORTC,ON_OFF	; Lampe ausschalten
	return

;************************************************
;* Lampe einschalten
;* PWM wird eingeschaltet und mit dem Wert vom CCPR1L_TMP initialisiert
;************************************************
LAMP_ON
	movlw	D'0'
	movwf	CCPR1L		; CCPR1L = 0%
	call	Delay1000	; ein bisschen warten, damit sich die PWM einstellen kann
	bcf	PORTC,ON_OFF	; Lampe mit Softstart einschalten

	call	SOFTSTART	; Lampe sanft hochfahren
	return

;************************************************
;* in einer Schleife wird das Tastverh鋖tnis von 0% bis auf
;* den in CCPR1L_TMP vorhandenen Wert gesteigert
;* daf黵 werden ca. 250 ms ben鰐igt.
;************************************************
SOFTSTART
	movlw	D'0'
	movwf	CCPR1L		; CCPR1L = 0%

SOFTSTART_LOOP
	incf	CCPR1L,f
	incf	CCPR1L,f
 ifdef 	DEBUG
	movlw	D'250'
	movwf	CCPR1L
 else
	call	Delay1000
 endif
	movf	CCPR1L,w
 	subwf	CCPR1L_TMP,w	; w = CCPR1L_TMP - w
	btfsc	STATUS,C
	goto	SOFTSTART_LOOP

	movf	CCPR1L_TMP,w
	movwf	CCPR1L		; urspr黱glichen Wert von CCPR1L wieder herstellen
	return


SOS_MODE
	movlw	3
	movwf	SOS_COUNTER
SOS_MODE_1
	call	PAUSE_SHORT
	btfsc	BIT_ARRAY,BIT_TASTER
	goto 	SOS_MODE_ENDE		; Taster wurde gedr點kt
	call	PAUSE_LONG		; lang
	btfsc	BIT_ARRAY,BIT_TASTER
	goto 	SOS_MODE_ENDE		; Taster wurde gedr點kt

	decfsz	SOS_COUNTER,f
	goto	SOS_MODE_1

	movlw	3
	movwf	SOS_COUNTER
SOS_MODE_2
	call	PAUSE_SHORT
	btfsc	BIT_ARRAY,BIT_TASTER
	goto 	SOS_MODE_ENDE		; Taster wurde gedr點kt

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91久久久久久一区二区 | 亚洲国产精品成人久久综合一区 | 国内一区二区视频| 日韩激情视频在线观看| 亚洲成人综合视频| 午夜精品一区在线观看| 日精品一区二区| 奇米精品一区二区三区四区| 免费看黄色91| 国产一区在线观看麻豆| 国产精品1区二区.| 成人精品高清在线| 成人黄色国产精品网站大全在线免费观看 | 国产成人精品1024| 国产精品亚洲成人| 成人精品高清在线| 欧美性大战久久久久久久蜜臀| 91黄色免费观看| 51精品久久久久久久蜜臀| 精品国产一区二区三区忘忧草| 久久久久一区二区三区四区| 欧美国产欧美综合| 亚洲欧美日韩一区二区三区在线观看| 亚洲男同性视频| 蜜桃av一区二区在线观看 | 91久久免费观看| 91麻豆精品国产91久久久资源速度| 欧美va亚洲va国产综合| 国产精品卡一卡二| 香蕉乱码成人久久天堂爱免费| 久久99国产精品免费| 99国产精品视频免费观看| 在线91免费看| 一区在线观看免费| 日本三级亚洲精品| 99热在这里有精品免费| 91麻豆精品国产91久久久使用方法| 国产区在线观看成人精品| 亚洲成人av在线电影| 国产高清在线精品| 91精品国产综合久久久久久久久久| 日本一区二区三区久久久久久久久不 | 久久久久九九视频| 亚洲黄色免费网站| 丁香婷婷深情五月亚洲| 欧美一区日韩一区| 亚洲国产精品一区二区久久| 国产美女在线观看一区| 欧美日韩久久不卡| 国产精品久久一级| 国精品**一区二区三区在线蜜桃| 91九色最新地址| 国产精品久久网站| 国产精品白丝jk黑袜喷水| 欧美一区二区三区免费在线看| 日韩毛片视频在线看| 国产一区二区三区在线看麻豆| 欧美日韩aaaaa| 亚洲天堂免费在线观看视频| 国产精品资源网站| 欧美成人三级电影在线| 日韩在线卡一卡二| 欧美日韩一本到| 亚洲综合成人在线视频| 91丨porny丨蝌蚪视频| 亚洲国产精品二十页| 成人综合婷婷国产精品久久蜜臀| 精品精品国产高清a毛片牛牛 | 日韩欧美电影一区| 午夜a成v人精品| 欧美视频一区二区在线观看| 中文字幕日韩一区二区| www.久久久久久久久| 中文字幕在线不卡| 91亚洲精品久久久蜜桃网站| 亚洲视频一区在线观看| av网站一区二区三区| 亚洲欧美成人一区二区三区| 91在线观看污| 国产精品人成在线观看免费 | 不卡av电影在线播放| 国产精品久久久久精k8| 97久久超碰国产精品电影| 亚洲日本乱码在线观看| 91久久免费观看| 日韩电影在线观看一区| 日韩精品在线网站| 国产精品一级黄| 中文在线免费一区三区高中清不卡| 国产精品羞羞答答xxdd| 亚洲视频资源在线| 欧美日本韩国一区二区三区视频 | 国产精品99久久久久久有的能看 | 日本亚洲三级在线| 精品久久久久久亚洲综合网| 精品亚洲国内自在自线福利| 久久精品人人做人人综合 | 欧美三级三级三级爽爽爽| 午夜精品一区二区三区三上悠亚| 欧美一区在线视频| 成人视屏免费看| 亚洲自拍偷拍九九九| 日韩视频在线观看一区二区| 国产成人在线视频网站| 亚洲精品视频在线观看网站| 欧美精品aⅴ在线视频| 国产成人在线免费观看| 一区二区三区在线免费播放 | 99在线精品视频| 五月激情六月综合| 国产亚洲婷婷免费| 欧美在线一二三| 国产剧情av麻豆香蕉精品| 一区二区三区丝袜| 精品1区2区在线观看| 色综合久久久久网| 国产在线视频一区二区三区| 樱桃视频在线观看一区| 久久久久久麻豆| 在线观看免费一区| 久久国产精品区| 亚洲精品国产一区二区精华液| 日韩一区二区三区视频| 97久久精品人人做人人爽50路| 美女mm1313爽爽久久久蜜臀| 中文一区二区完整视频在线观看| 在线成人av影院| 91免费在线视频观看| 国内精品久久久久影院薰衣草| 亚洲一区在线观看免费| 中文字幕精品一区二区三区精品| 欧美日韩成人一区二区| 色狠狠av一区二区三区| 成人一区在线观看| 国产一区二区在线电影| 天天av天天翘天天综合网| 亚洲日本中文字幕区| 中文字幕av资源一区| 国产亚洲一区二区三区| 2023国产一二三区日本精品2022| 欧美日韩一级片在线观看| 91国产免费观看| 色悠悠久久综合| 94色蜜桃网一区二区三区| 成人性生交大片免费看在线播放| 久久机这里只有精品| 丝袜美腿亚洲一区| 亚洲18影院在线观看| 亚洲一级片在线观看| 亚洲一二三四在线观看| 一区二区欧美视频| 亚洲专区一二三| 亚洲欧美在线高清| 亚洲同性同志一二三专区| 国产精品国产三级国产a| 亚洲欧美怡红院| 一区二区三区四区av| 亚洲成av人片www| 日韩 欧美一区二区三区| 欧美aaaaaa午夜精品| 捆绑紧缚一区二区三区视频| 免费观看日韩av| 国产精品影音先锋| 成人精品视频一区二区三区| 不卡在线观看av| 欧美影视一区在线| 欧美丰满少妇xxxxx高潮对白| 日韩欧美在线网站| 久久久99精品免费观看| 中文字幕在线观看不卡| 亚洲r级在线视频| 久草热8精品视频在线观看| 国产高清亚洲一区| 日本韩国精品在线| 日韩欧美一二区| 日本一区二区三区国色天香| 一区二区三区四区精品在线视频 | 国产欧美日韩不卡| 亚洲欧美日韩国产综合| 丝袜美腿亚洲一区二区图片| 国产精品中文字幕日韩精品| 99精品国产一区二区三区不卡| 欧美日韩精品一区二区三区蜜桃| 91精品麻豆日日躁夜夜躁| 国产亚洲精品资源在线26u| 亚洲私人影院在线观看| 日本麻豆一区二区三区视频| 粉嫩在线一区二区三区视频| 欧美亚洲尤物久久| 久久久高清一区二区三区| 亚洲美女偷拍久久| 九九精品视频在线看| 色老头久久综合| 国产日本亚洲高清| 日本美女一区二区| 91女神在线视频| 久久免费电影网| 日韩精品久久久久久| 成人av免费在线播放| 精品裸体舞一区二区三区|