论坛风格切换切换到宽版
  • 2617阅读
  • 0回复

31202的程序问题。为什么程序有时候行有候不行。?? [复制链接]

上一主题 下一主题
离线wosidaxiong
 
只看楼主 倒序阅读 0楼 发表于: 2008-02-25
;*****************
;;;工作寄存器定义
;*****************
r0==0x00
tcc==0x01
pc==0x02
status==0x03
rsr==0x04
p5==0x05
p6==0x06
p7==0x07
r3f==0x3f;为中断寄存器
;************************
;;特殊功能寄存器定义
;********************
cont==0x01
ioc5==0x05
ioc6==0x06
ioc7==0x07
ioce==0x0e
iocf==0x0f
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;锁相环控制串行变量定义;;;;
;data 为数据输入;ck为时钟;;;;
;stb为使能控制位;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
data==1;p51
ck==1;p71
stb==0;p70
bitcount==0x20
bitdata==0x21
;*********************
;;;;位定义
;**************
c==0
z==2
;==================================
org 0xfff
jmp start
org 0x003
start:
mov a,@0x11
iow ioce;关看门狗禁止唤醒功能r-option.p76.p77为通用io口
mov a,@0x3f
contw
mov a,@0x00
iow ioc5
iow ioc6
iow ioc7
mov p5,a
mov p6,a
mov p7,a
main:
bc p7,ck
bc p7,stb
mov a,@0b00110110
mov bitdata,a
mov a,@0x08
call writebit
mov a,@0b01100000
mov bitdata,a
mov a,@0x06
call writebit
call bitstb
;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov a,@0x00
mov bitdata,a
mov a,@0x08
call writebit
;=========================
;=======================
mov a,@0b10101100
mov bitdata,a
mov a,@0x06
call writebit
call bitstb
;======================
mov a,@0b00101001
mov bitdata,a
mov a,@0x08
call writebit
;===========================
mov a,@0b11000010
mov bitdata,a
mov a,@0x08
call writebit
;======================
mov a,@0b00100000
mov bitdata,a
mov a,@0x03
call writebit
call bitstb
bs p7,ck
main1:
bc p6,3
ior ioc6
or a,@0x02
iow ioc6
jbc p6,1
jmp main1
bs p6,3
jmp main1
;**********************
writebit:
  mov bitcount,a
writebit1:  
  bs p5,data
  rlc bitdata
  jbs status,c
  bc p5,data
  bs p7,ck
  nop
  nop
  nop
  nop
  nop
  bc p7,ck
  nop
  nop
  nop
  nop
  nop
  djz bitcount
  jmp writebit1
  ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;  
bitstb:
bs p7,stb
bc p7,stb
ret