📄 yalibiao18.s43
字号:
mov @SP,Distmp2 ;
call #FLT_REC ;
mov Distmp2,R8
End_cal call #outLCD
ret
xiaoy0 mov.b #07Bh,LCDM11 ;小于下限时显示0.000
mov.b #07Bh,LCDM12
mov.b #07Bh,LCDM13
mov.b #07Bh,LCDM14
bis.b #080h,LCDM14
mov.b #067h,LCDM17
ret
EVEN
F10H DW 08320h
F10L DW 0000h
F100H DW 08648h
F100L DW 0000h
F1000H DW 0897Ah
F1000L DW 0000h
F36H DW 08166h
F36L DW 06666h
F45H DW 08210h ;现在以2.5V时2238为计算,等真正测时再具体
F45L DW 0000h
FxxxxH DW 08D41h ;12379.6 是4.5V是4次AD转换值总和
FxxxxL DW 06E66h
F58PH DW 08239h ;暂时以0.5V变到4.5V是压力从0变到5.8 psi为计算 1 psi=6.89476 kPa
F58PL DW 09999h
F20PH DW 08100h ;暂时以0.5V变到4.5V是压力从0变到2.0 psi为计算
F20PL DW 0000h
;-----------------------------------------------------------------------
;-------------------------------------------------------------------
;
;--------------------------------------------------------------------
setup mov #05A80h,&WDTCTL
bis.b #WDTIE,&IE1
dint
setupLCD ;mov.b #05Dh,&LCDCTL ;初始化LCD
mov.b #LCDON+LCD4MUX+LCDP2,&LCDCTL ;9Dh
;bis.b #0FCh,&P5SEL ;set Rxx and COM pins for LCD
bis.b #0FFh,&P5SEL
setupBT mov.b #BT_ADLY_2000,&BTCTL ;Basic Timer interrupt = 1 second 初始化BT
bic.b #BTFRFQ1,&BTCTL ;set freqLCD = ACLK / 64*
;bis.b #BTIE,&IE2 ;**
bic.b #BTIE,&IE2
mov #10000,R16
FLL_Wait dec R16 ;delay for FLL to lock
jnz FLL_Wait
bic.b OFIFG,&IFG1
clr.b index
setupP1 mov.b #0FFh,&P1IES ;初始化P1
mov.b #0FFh,&P1DIR ;
mov.b #00h,&P1OUT
clr.b &P1IFG
setupP2 mov.b #0Fh,&P2IE ;*初始化P2
mov.b #0F0h,&P2DIR ;
mov.b #00h,&P2OUT ;*
;bis.b #BIT1,&P2DIR
;bis.b #BIT1,&P2OUT
clr.b &P2IFG
setupP6 mov.b #0FFh,&P6DIR ;04/09/10 初始化P6
mov.b #00h,&P6OUT
setupP34 mov.b #00h,&P3OUT ;初始化P34
mov.b #0FFh,&P3DIR
mov.b #00h,&P4OUT
mov.b #0FFh,&P4DIR
mov.b #00h,&P5OUT
mov.b #0FFh,&P5DIR
setupCA mov.b #P2CA0,&CACTL2 ;初始化CA
clr.b &CACTL1
mov.b #040h,&CAPD
setupADC bis.b #01h,&P6SEL ;初始化ADC12
bic #ENC,&ADC12CTL0
mov #BIT6+REFON+ADC12ON,&ADC12CTL0 ;2.5V ,打开参考电压发生器
mov #CONSEQ_0,&ADC12CTL1
bis #BIT3,&ADC12CTL1 ;04/10/8 用ACLK做AD的时钟
mov.b #00h,&ADC12MCTL0
mov #BIT0,&ADC12IE
bis #ENC,&ADC12CTL0
mov.b #a+b+c+d+e+f+g+h,LCDM11 ;检查LCD显示
mov.b #a+b+c+d+e+f+g+h,LCDM12
mov.b #a+b+c+d+e+f+g+h,LCDM13
mov.b #a+b+c+d+e+f+g+h,LCDM14
mov.b #a+b+c+d+e+f+g+h,LCDM15
mov.b #a+b+c+d+e+f+g+h,LCDM16
mov.b #a+b+c+d+e+f+g+h,LCDM17
mov.b #a+b+c+d+e+f+g+h,LCDM18
mov.b #12,R14 ;
waiting ;mov #2500,R16
mov #62500,R16 ;*
call #Delay
dec.b R14
jnz waiting
clr.b &P1IFG
clr.b &P2IFG
clearLCD call #clrRAM_LCD ;清除LCD
;---------------------------------以下这一段是初始化时读取存入内部flash的上下限放入CN1-7----------
mov #01080h,R13
cmp #0FFFFh,0(R13)
jne read_CNX
clr.b CN1
clr.b CN2
clr.b CN3
clr.b CN5
clr.b CN6
clr.b CN7
clr TEMP1
clr TEMP2
jmp setupTA
read_CNX mov 0(R13),TEMP1
mov 2(R13),TEMP2
mov TEMP1,R5
call #BINtoBCD
mov R8,R11
and #000Fh,R11
mov.b R11,CN1
mov R8,R11
rra.b R11
rra.b R11
rra.b R11
rra.b R11
and #000Fh,R11
mov.b R11,CN2
swpb R8
and #000Fh,R8
mov.b R8,CN3
mov TEMP2,R5
call #BINtoBCD
mov R8,R11
and #000Fh,R11
mov.b R11,CN5
mov R8,R11
rra.b R11
rra.b R11
rra.b R11
rra.b R11
and #000Fh,R11
mov.b R11,CN6
swpb R8
and #000Fh,R8
mov.b R8,CN7
;-------------------------------------------------------------------------
setupTA ;mov #05A1Ch,&WDTCTL
mov #05A1Eh,&WDTCTL ;16ms interrupt
mov.b #SCFQ_2M,&SCFQCTL ;2M MCLK
mov #20000,R16 ;待MCLK稳定
call #Delay
nop
eint ;开放总中断
ret
;----------------------------------------------------------------------------
clrRAM_LCD ;清RAM和LCDMX
clr R13
RCL clr.b 200h(R13)
inc R13
cmp #048h,R13
jlo RCL
clr.b &IFG1
clr.b &IFG2
clrLCD1 clr R13
clrLCD clr.b 9BH(R13) ;
inc R13
cmp #09h,R13
jlo clrLCD
ret
;--------------------------------------------------------------------------------
; 擦除内部flash 块A
;--------------------------------------------------------------------------------
Eflash1
xor #FXKEY+LOCK,&FCTL3
TestBusy31 bit #BUSY,&FCTL3
jnz TestBusy31
mov #(FWKEY+FSSEL0+FN0+FN2),&FCTL2
mov #FWKEY+ERASE,&FCTL1
clr &01000h
clr &01002h
TestBusy41 bit #BUSY,&FCTL3
jnz TestBusy41
xor #FXKEY+LOCK,&FCTL3
ret
;--------------------------------------------------------------------------------
; 擦除内部flash 块B
;--------------------------------------------------------------------------------
Eflash
xor #FXKEY+LOCK,&FCTL3
TestBusy3 bit #BUSY,&FCTL3
jnz TestBusy3
mov #(FWKEY+FSSEL0+FN0+FN2),&FCTL2
mov #FWKEY+ERASE,&FCTL1
clr &01080h
clr &01082h
TestBusy4 bit #BUSY,&FCTL3
jnz TestBusy4
xor #FXKEY+LOCK,&FCTL3
ret
;--------------------------------------------------------------------------------
; flash 写
;--------------------------------------------------------------------------------
Wflash
TestBusy1 bit #BUSY,&FCTL3
jnz TestBusy1
mov #FWKEY,&FCTL3 ;clean LOCK bit
mov #(FWKEY+FSSEL0+FN0+FN2),&FCTL2
mov #FWKEY+WRT,&FCTL1 ;enable FLASH write
mov R18,0(R13) ;save a word in info memory
TestBusy2 bit #BUSY,&FCTL3 ;check busy flag
jnz TestBusy2 ;loop until not busy
mov #FWKEY,&FCTL1 ;lock FLASH memory
xor #FXKEY+LOCK,&FCTL3
ret
;-------------------------------------------------------------------------------
; Delay Subroutines use R16,R16=2500 for 10ms;R16=25000 for 100ms;
; R16=62500 for 250ms
;-------------------------------------------------------------------------------
Delay dec R16
jnz Delay
ret
;--------------------------------------------------------------------------
; P2口中断
;--------------------------------------------------------------------------
P2x_ISR bic #LPM3,0(SP)
bit.b #02h,&P2IFG
jnz P21_ISR
bit.b #01h,&P2IFG
jnz P20_ISR
bit.b #08h,&P2IFG
jnz P23_ISR
bit.b #04h,&P2IFG
jz EndP2x
P22_ISR bic.b #04h,&P2IFG ;清P2.2中断标志
flag_0 cmp.b #02h,index
jne pd_index ;跳去判断index?=4(设置下限)
cmp.b #1,flag ;index=2(设置上限)
jeq flag_1 ;flag=1表示在设置状态下时的上限最后一位可以修改,对应于变量CN1和LCDM11,表示修改到LCDM11
cmp.b #2,flag ;flag=2表示在设置状态下时的上限最后2位可以修改,对应于变量CN2和LCDM12,表示修改到LCDM12
jeq flag_2
cmp.b #3,flag ;flag=2表示在设置状态下时的上限最高位可以修改,对应于变量CN3和LCDM13,表示修改到LCDM13
jeq flag_3
jmp EndP2x
flag_1 inc.b CN1 ;按一次P2.2键,CN1将加1,变量对应关系 :flag=1-------CN1-----LCDM11
cmp.b #0Ah,CN1 ; flag=2-------CN2-----LCDM12
jlo EndP2x ; flag=3-------CN3-----LCDM13
clr.b CN1
jmp EndP2x
flag_2 inc.b CN2
cmp.b #0Ah,CN2
jlo EndP2x
clr.b CN2
jmp EndP2x
flag_3 inc.b CN3
cmp.b #0Ah,CN3
jlo EndP2x
clr.b CN3
jmp EndP2x
pd_index cmp.b #04h,index ;设置下限,变量的对于关系:flag=5-------CN5-----LCDM11
jne EndP2x ; flag=6-------CN6-----LCDM12
cmp.b #5,flag ; flag=7-------CN7-----LCDM13
jeq flag_5 ;
cmp.b #6,flag
jeq flag_6
cmp.b #7,flag
jeq flag_7
jmp EndP2x
flag_5 inc.b CN5
cmp.b #0Ah,CN5
jlo EndP2x
clr.b CN5
jmp EndP2x
flag_6 inc.b CN6
cmp.b #0Ah,CN6
jlo EndP2x
clr.b CN6
jmp EndP2x
flag_7 inc.b CN7
cmp.b #0Ah,CN7
jlo EndP2x
clr.b CN7
jmp EndP2x
;;------------------------------------
P20_ISR bic.b #01h,&P2IFG ;进入上下限设定
;mov #2500,R16 ;要了延时会进不去
;call #Delay
;bit.b #01h,&P2IN
;jnz EndP2x
inc.b flag4
cmp.b #1,flag4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -