给大家参考
;--------------------------------------------------------------
; 係俵俫倸 僶僢僋晅偒僗僺乕僪僐儞僩儘乕儔乕
; 俁亅係僙儖梡偺僴僀僒僀僩懁俀俽俰俥俤俿
; 儘乕僒僀僩俀俽俲捈愙嬱摦
; 侾俀俠俆侽俋 Copyright (c) 1999 by M.Iijima
;
; 丂丂丂丂丂丂僾儘僌儔儉惂嶌丂斞搰姴梇
;丂丂俋俋乛侾侽乛俀侽
; _______ _______
; | 倁 |
; 3-5.5V+ Vdd --+ 1 8 +-- Vss 0V
; | |
; 慜恑俶 GP5/OSC1 --+ 2 << << 7 +-- GP0--屻恑俶
; | |
; 屻恑俹 GP4/OSC2 --+ 3 << << 6 +-- GP1--慜恑俹+踢俦?
; | |
; 僶僢僥儕乕僗僀僢僠 --+ 4 >> << 5 +-- GP2--庴怣僷儖僗擖椡
; | |
; +----------------+
;
;
; 僯儏僂帪丂GP0=0 GP1=1 GP4=1 GP5=0
; 剔诎?帪丂GP0=1 GP1=1 GP4=1 GP5=1
; 慜恑偺帪丂GP0=0 GP1=0 GP4=1 GP5=1 亄僷儖僗俹倂俵怣崋弌椡
; 屻恑偺帪丂GP0=1 GP1=1 GP4=0 GP5=0 亄僷儖僗俹倂俵怣崋弌椡
;
; 拲堄丒庴怣怣崋偑嶌摦拞偵憲怣婡偺揹尮傪愗偭偨応崌偵俹俹俵偺応崌
; 応崌偵傛偭偰偼丄慡奐嶌摦偡傞応崌偑偁傝傑偡丅
; 俹俠俵偺応崌偼栤戣側偟丅
;僽儗乕僉巇條偼丄媡婲揹椡偵傛傝俹俬俠偑堎忢嶌摦偡傞偺偱暿揹尮巇條偱巊梡
;
;--------------------------------------------------------------
include 12c5xx.h
.12c509
.osc intrc
.pwrt on
.mclre disable ;僷儚乕俷俶儕僙僢僩
.wdt off
.protect off
org 0ch
wk2 ds 1 ;墘嶼梡偵巊偆
wk ds 1
hids ds 1 ;怣崋偺嵟挿僨乕僞偺僔僗僥儉
lods ds 1 ;怣崋偺嵟抁僨乕僞偺僔僗僥儉
hidc ds 1 ;俥俤俿俷俶梡偺僇僂儞僞乕
lodc ds 1 ;慜恑懁婎弨僇僂儞僞乕
lodcc ds 1 ;僶僢僋懁婎弨僇僂儞僞乕
pam ds 1 ;僷儖僗偺儅僗僞乕僨乕僞
pay ds 1 ;僷儖僗偺儅僗僞乕梊旛僨乕僞
tm1 ds 1
tm2 ds 1
tm3 ds 1
cn ds 1
cn2 ds 1
fetxx ds 1
fetxo ds 1
fetox ds 1
fetoo ds 1
femxx ds 1
femxo ds 1
femox ds 1
femoo ds 1
bep0 ds 1
bep1 ds 1
bept ds 1
org 0
goto start
;
;---------奐巒僾儘僌儔儉-----------------------
;
start movlw 001100b ;001100b
; 僯儏僂帪丂GP0=0 GP1=1 GP4=1 GP5=0
tris gpio
bcf gpio,0 ;俥俤俿慡偰俷俥俥
bsf gpio,1 ;gp1=1,4=1
bsf gpio,4 ;俥俤俿慡偰俷俥俥
bcf gpio,5 ;gp0=0,5=0
machi btfss gpio,3 ;揹尮僆儞偐
goto machi ;
clr hids
clr lods
clr hidc
clr lodc
clr pam
clr pay
nop
call waits ;埨掕偡傞傑偱懸偪
nop
call beep
nop
call waits
nop
call beep
;---------憲怣婡偺怣崋懸偪-------------------
shoki ;俙億乕僩偐傜僨乕僞擖椡
btfsc gpio,2 ;僷儖僗俫俬偼栠傞
goto shoki ;
shokid nop ;俙億乕僩偐傜僨乕僞擖椡
btfss gpio,2 ;僷儖僗倢倧偼栠傞
goto shokid ;
;--------怣崋偺婎弨僇僂儞僩傪愝掕俴俷懁---------
clr pam
goto kass ;僇僂儞僩儖乕僠儞傊
kabb nop ;
mov lodc,pam ;儘乕僨乕僞傪搊榐
mov pay,pam ;僇僂儞僞乕偵傕搊榐
cjb lodc,#85,boo
goto bxx ;僶僢僋柍愝掕傊
;---------------僽儗乕僉桳傝愝掕儖乕僠儞--------
boo add lodc,#8 ;僯儏乕僩儔儖僇僂儞僩亄
mov lodcc,lodc ;lodcc=lodc
sub lodcc,#4 ;媡揮懁偺曗惓
mov femxx,#1 ;僽儗乕僉側偟愝掕
goto main
;---------------僽儗乕僉柍偟愝掕儖乕僠儞----
bxx call beep
call wait
clr pam ;婎弨傪侽偵
bshoki ;俙億乕僩偐傜僨乕僞擖椡
btfsc gpio,2 ;僷儖僗俫俬偼栠傞
goto bshoki ;
bshoki1 ;俙億乕僩偐傜僨乕僞擖椡
btfss gpio,2 ;僷儖僗倢倧偼栠傞
goto bshoki1 ;
;--------怣崋偺婎弨僇僂儞僩傪愝掕俴俷懁---------
clr pam
goto kas2 ;僇僂儞僩儖乕僠儞傊
kab2 nop ;
mov lodc,pam ;儘乕僨乕僞傪搊榐
mov pay,pam ;僇僂儞僞乕偵傕搊榐
cjb lodc,#90,bxxm
goto bxx ;僽儗乕僉柍偟傊
bxxm
add lodc,#8 ;僯儏乕僩儔儖亄係僇僂儞僩
mov lodcc,lodc ;lodcc=lodc
sub lodcc,#4 ;媡揮懁偺曗惓
mov femxx,#0 ;僽儗乕僉桳傝愝掕
call beep
call waits
call beep
call waits
call beep
goto main
;-------僇僂儞僩僒僽----------------------------
kass inc pam ;儅僗僞乕偵僷儖僗傪亄侾偡傞
mov cn,#4 ;係僇僂儞僩
lopcu nop ;
djnz cn,lopcu ;
btfsc gpio,2
goto kass
goto kabb
;-------僇僂儞僩僒僽LO--------------------------
kas2 inc pam ;儅僗僞乕偵僷儖僗傪亄侾偡傞
mov cn,#4 ;係僇僂儞僩
lopaa nop ;
djnz cn,lopaa ;
btfsc gpio,2
goto kas2
goto kab2
;-------俛俤俤俹壒僒僽儖乕僠儞---------------------
beep mov cn2,#70 ;價乕乕僾壒
loop0 bcf gpio,0
bcf gpio,1 ;001偺俥俤俿怣崋
bsf gpio,4 ;001偺俥俤俿怣崋
bsf gpio,5 ;001偺俥俤俿怣崋
mov cn,#10 ;俷俶僇僂儞僩
loop2 nop ;
djnz cn,loop2 ;
bsf gpio,1
mov cn,#200 ;俷俥俥僇僂儞僩
loop3 nop ;
djnz cn,loop3 ;
djnz cn2,loop0
bsf gpio,1 ;001偺俥俤俿怣崋
bcf gpio,5 ;001偺俥俤俿怣崋
retlw 3
;------------僞僀儅乕儖乕僠儞---------------------------
wait
mov tm1,#3 ;儘儞僌僞僀儅乕
wait2 clr tm3
wait0 clr tm2
wait1 nop
djnz tm2,wait1
djnz tm3,wait0
djnz tm1,wait2
retlw 3
;--------------------------------------------------------
waits
mov tm1,#1 ;僔儑僂僩僞僀儅乕
waits2 clr tm3
waits0 clr tm2
waits1 nop
djnz tm2,waits1
djnz tm3,waits0
djnz tm1,waits2
retlw 3
;--------------儊僀儞僾儘僌儔儉---------------------------
main btfss gpio,3 ;揹尮俷俥俥僠僃僢僋
goto bwait ;僶僢僥儕乕庢傝奜偟杊巭傊
movf lodc,w ;僇僂儞僩傪倂儗僕僗僞乕傊
subwf pay,w ;僇僂儞僩偐傜儘乕僨乕僞堷偔
mov hids,w ;怣崋曄壔検傪搊榐
mov lods,#16 ;婎弨俫俬僇僂儞僩
csa hids,lods
goto mainxx
mov lods,hids
mainxx movf hids,w ;俷俥俥僇僂儞僩悢搊榐
subwf lods,w
mov lods,w
cjae hids,#190,xbmain2 ;僶僢僋嶌摦椞堟傊
;--------------俥俤俿怣崋偺俫俬晹-----儌乕僞乕夞揮晹----------------
main2
call countp ;庴怣怣崋張棟
csa hids,#1
goto main3
; 僯儏僂帪丂GP0=0 GP1=1 GP4=1 GP5=0
; 剔诎?帪丂GP0=1 GP1=1 GP4=1 GP5=1
; 慜恑偺帪丂GP0=0 GP1=0 GP4=1 GP5=1 亄僷儖僗俹倂俵怣崋弌椡
; 屻恑偺帪丂GP0=1 GP1=1 GP4=0 GP5=0 亄僷儖僗俹倂俵怣崋弌椡
; bcf gpio,0 ;儌乕僞乕俷俶
; bsf gpio,4 ;
bcf gpio,1 ;
bsf gpio,5 ;僶僢僋俷俥俥
dec hids ;僇僂儞僞乕偐傜侾堷偔
goto main2
;--------------俥俤俿怣崋偺俴俷晹--------------------------
main3
call countp ;庴怣怣崋張棟
csa lods,#1 ;
goto main ;
; bcf gpio,0 ;儌乕僞乕俷俶
; bsf gpio,4 ;
bsf gpio,1 ;
bcf gpio,5 ;僶僢僋俷俥俥
dec lods ;僇僂儞僞乕偐傜侾堷偔
goto main3
;--------------僶僢僋惂屼---------------------------------
xbmain2
; cje femxx,#0,xmain2 ;僯儏乕僩儔儖僒僽傊
;-----------------------------------------------------------
movf pay,w ;僇僂儞僩傪倂儗僕僗僞乕傊
subwf lodcc,w ;婎弨僇僂儞僩偐傜堷偔
mov hids,w ;怣崋曄壔検傪搊榐
mov lods,#22 ;婎弨俫俬僇僂儞僩
csa hids,lods
goto maincc
mov lods,hids
maincc movf hids,w ;俷俥俥僇僂儞僩悢搊榐
subwf lods,w
mov lods,w
;--------------僯儏乕僩儔儖偺応崌僶僢僋柍偟傊亅亅亅亅亅亅
cjb hids,#9,xmain2 ;僯儏乕僩儔儖椞堟傊
sub hids,#8 ;媡揮僇僂儞僩傪峑惓
cjae hids,#190,xmain2 ;僯儏乕僩儔儖嶌摦椞堟傊
;-------------------------------------------------------
bmain2 call countp ;庴怣怣崋張棟
csa hids,#1
goto bmain3
; 僯儏僂帪丂GP0=0 GP1=1 GP4=1 GP5=0
; 剔诎?帪丂GP0=1 GP1=1 GP4=1 GP5=1
; 慜恑偺帪丂GP0=0 GP1=0 GP4=1 GP5=1 亄僷儖僗俹倂俵怣崋弌椡
; 屻恑偺帪丂GP0=1 GP1=1 GP4=0 GP5=0 亄僷儖僗俹倂俵怣崋弌椡
; bsf gpio,1 ;
; bcf gpio,5 ;僶僢僋俷俶
bsf gpio,0 ;
bcf gpio,4 ;僶僢僋俷俶
dec hids ;僇僂儞僞乕偐傜侾堷偔
goto bmain2
;--------------俛桳傝晹--------------------------
bmain3
call countp ;庴怣怣崋張棟
csa lods,#1 ;
goto main ;
; bsf gpio,1 ;
; bcf gpio,5 ;僶僢僋俷俶
bcf gpio,0 ;
bsf gpio,4 ;僶僢僋俷俶
dec lods ;僇僂儞僞乕偐傜侾堷偔
goto bmain3
;----------------on-------------------------------------
countp btfsc gpio,2
goto coup ;僷儖僗偁傝
cjbe pam,#0,aaaa
mov pay,pam ;梊旛僨乕僞傊搊榐
clr pam ;幚應僼傽僀儖傪侽偵
aaaa retlw 3
coup inc pam ;僷儖僗亄侾
goto aaaa
;--------------僯儏乕僩儔儖僒僽晹-----------------------
xmain2 cje femxx,#0,xmain22 ;僯儏乕僩儔儖僒僽傊
xnain2
call countp ;庴怣怣崋張棟
csa hids,#1
goto xnain3
; 僯儏僂帪丂GP0=0 GP1=1 GP4=1 GP5=0
; 剔诎?帪丂GP0=1 GP1=1 GP4=1 GP5=1
; 慜恑偺帪丂GP0=0 GP1=0 GP4=1 GP5=1 亄僷儖僗俹倂俵怣崋弌椡
; 屻恑偺帪丂GP0=1 GP1=1 GP4=0 GP5=0 亄僷儖僗俹倂俵怣崋弌椡
bcf gpio,0
; bsf gpio,1
; bsf gpio,4 |