亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
正在播放一区二区| 日本丰满少妇一区二区三区| 国产日韩欧美高清在线| 色噜噜偷拍精品综合在线| 免费成人av资源网| 久久精品视频一区二区| 色婷婷久久久亚洲一区二区三区 | 国产综合色精品一区二区三区| 亚洲天堂福利av| 日本一区二区三区四区在线视频| 日韩一区二区电影| 在线观看成人小视频| 99久久国产综合精品麻豆| 国产在线播放一区二区三区| 五月天中文字幕一区二区| 一区二区三区**美女毛片| 17c精品麻豆一区二区免费| 精品国产乱码久久久久久夜甘婷婷 | 国产亚洲欧美在线| 欧美va亚洲va香蕉在线| 欧美一二三区精品| 欧美一区二区三区免费大片| 欧美一区二区三区公司| 日韩一区二区三区视频| 精品国产制服丝袜高跟| 精品国产91洋老外米糕| 26uuu亚洲综合色| 久久久影视传媒| 国产亚洲一二三区| 国产精品全国免费观看高清| 国产精品蜜臀av| 亚洲国产激情av| 成人欧美一区二区三区小说| 欧美国产日韩精品免费观看| 国产精品传媒视频| 亚洲一区二区三区影院| 日本午夜精品一区二区三区电影| 六月婷婷色综合| 国产v日产∨综合v精品视频| 蜜桃av一区二区| 国产999精品久久| 91美女片黄在线| 7878成人国产在线观看| 欧美videofree性高清杂交| 国产欧美一区二区精品久导航| 久久久久久久综合| 亚洲一线二线三线久久久| 精品一区二区三区免费观看| 91国模大尺度私拍在线视频| 欧美精品一区二区三区久久久| 亚洲欧美日韩国产手机在线| 国产一区二区伦理| 91精品国产美女浴室洗澡无遮挡| 亚洲婷婷国产精品电影人久久| 久久精品国产在热久久| 欧美精品在线观看一区二区| 中文字幕日韩一区| 狠狠狠色丁香婷婷综合激情 | 色哟哟在线观看一区二区三区| 日韩视频一区二区三区在线播放| 亚洲一卡二卡三卡四卡五卡| 国产原创一区二区三区| 日韩一区二区免费高清| 亚洲午夜久久久久中文字幕久| 成人在线综合网| 精品国产免费人成在线观看| 五月天视频一区| 欧美三级韩国三级日本三斤| 亚洲另类春色国产| 91美女片黄在线观看91美女| 国产精品国产三级国产专播品爱网| 久久丁香综合五月国产三级网站 | 日韩三级在线免费观看| 午夜激情一区二区三区| 色先锋资源久久综合| 中文字幕亚洲在| av在线播放一区二区三区| 中文字幕精品综合| 国产99久久精品| 中文字幕第一区二区| 国产99久久久精品| 自拍偷自拍亚洲精品播放| 91在线播放网址| 亚洲男人都懂的| 欧美综合一区二区| 亚洲动漫第一页| 欧美一区二区视频网站| 蜜臀久久久久久久| 337p粉嫩大胆色噜噜噜噜亚洲 | 中文字幕精品一区| 丁香激情综合国产| ●精品国产综合乱码久久久久 | 欧美猛男男办公室激情| 视频一区欧美日韩| 日韩美女主播在线视频一区二区三区| 捆绑变态av一区二区三区| 精品久久久久久亚洲综合网| 国产福利精品一区二区| 国产精品国产三级国产aⅴ入口| 色婷婷精品久久二区二区蜜臂av | 日韩精品欧美精品| 久久影院午夜片一区| 成人av免费在线| 一区二区高清视频在线观看| 欧美日本一区二区| 国产最新精品精品你懂的| 亚洲色图制服诱惑 | 国产视频亚洲色图| 91蜜桃在线免费视频| 日韩精品成人一区二区三区| 国产亚洲精品福利| 欧美色手机在线观看| 国产麻豆成人传媒免费观看| 亚洲人成7777| 精品处破学生在线二十三| av激情亚洲男人天堂| 免费看日韩a级影片| 亚洲丝袜自拍清纯另类| 欧美一区二区三级| 91老司机福利 在线| 精品亚洲成a人在线观看| 亚洲欧美日本韩国| 日本一区二区综合亚洲| 欧美精品丝袜中出| 色综合中文字幕国产| 日韩黄色小视频| 亚洲欧洲另类国产综合| 亚洲精品在线网站| 欧美一区二区三区四区视频| 99re热这里只有精品视频| 久久99这里只有精品| 亚洲日本中文字幕区| 久久久午夜电影| 91精品在线麻豆| 在线免费观看成人短视频| 国产精品18久久久久久久网站| 日韩av中文字幕一区二区 | 一本到一区二区三区| 国产精品自拍网站| 久久国产精品72免费观看| 亚洲777理论| 亚洲精选视频免费看| 久久精品在这里| 精品理论电影在线| 欧美二区三区91| 欧美日韩中文精品| 99视频精品在线| 成人h动漫精品一区二区| 国产一区二区三区免费看| 久久99精品国产.久久久久| 日本麻豆一区二区三区视频| 亚洲二区在线视频| 亚洲综合久久av| 亚洲精品网站在线观看| 亚洲日本护士毛茸茸| 国产精品国产三级国产aⅴ入口 | 一色桃子久久精品亚洲| 国产精品免费视频网站| 中文字幕第一区第二区| 国产精品网友自拍| ...xxx性欧美| 一区二区三区资源| 亚洲激情五月婷婷| 亚洲第一在线综合网站| 水野朝阳av一区二区三区| 肉色丝袜一区二区| 美国毛片一区二区| 国产专区综合网| 国产成人福利片| 不卡一区在线观看| 欧美主播一区二区三区美女| 欧美日韩国产综合一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 91精品中文字幕一区二区三区| 欧美成人精品1314www| 国产欧美精品一区| 一级中文字幕一区二区| 日本女人一区二区三区| 国产精品资源网站| 色久综合一二码| 欧美一级二级在线观看| 久久久久亚洲综合| 亚洲一区二区美女| 国产一区日韩二区欧美三区| 97久久精品人人爽人人爽蜜臀| 色综合久久88色综合天天 | 26uuu精品一区二区在线观看| 国产亚洲精品免费| 亚洲一区二区三区免费视频| 麻豆精品一区二区三区| 成人av午夜影院| 3d成人动漫网站| 国产精品剧情在线亚洲| 午夜伊人狠狠久久| 国产福利一区二区三区| 欧美日韩国产另类不卡| 国产亚洲欧美日韩日本| 性做久久久久久久免费看| 福利91精品一区二区三区| 欧美二区三区91|