?? 程序清單,抱歉了,暫時沒有c語言的.txt
字號:
附錄1:程序清單
在Keil環境下ASM程序,抱歉了,暫時沒有C語言的
/* 趙營的畢業設計SVM1601A (16x1)接線圖
=================================================================
連接線圖: MCU-----89S52
DB0-----P2.0 DB4-----P2.4 RS-------P0_1
DB1-----P2.1 DB5-----P2.5 RW-------P0_2
DB2-----P2.2 DB6-----P2.6 E--------P0_3
DB3-----P2.3 DB7-----P2.7
VLCD接1K電阻到GND
=================================================================*/
/* 趙營的畢業設計ICL7135接線圖
=================================================================
連接線圖: MCU-----89S52
/STR----P3.2(/INT0)
B1-----P0.4 R/H------P0.0 BUSY----P3.6
B2-----P0.5 POL------P1.5
B4-----P0.6 OVER-----P1.6
B8-----P0.7 UNDER----P1.7
================================================================*/
DARPOLE EQU 60H ;正負號地址
DARSTART EQU 61H ;第一數位
DAREND EQU 67H ;結束位
INTNUM EQU 68H ;用于判斷中斷次數的寄存器
VGRADE EQU 69H ;檔位值
DPOINT EQU 6AH ;小數點位
BEGIN EQU 6BH ;顯示數據標志位
ADSTART BIT P0.0 ;A/D轉換使能
RS BIT P0.1
RW BIT P0.2
E BIT P0.3
ORG 0000H
SJMP START
ORG 0003H
LJMP INTUSE
START: SETB ADSTART ;趙營的畢業設計
MOV INTNUM,#00H ;清中斷次數
MOV SCON,#50H ;UART工作在MODE1
MOV TMOD,#20H ;TIMER1工作在MODE2
MOV TH1,#0A0H ;波特率300
SETB TR1 ;啟動記時器1
MOV IE,#10000001B ;中斷EA使能,EX0使能
MOV SP,#70H ;設置堆棧
MOV BEGIN,#00H
MOV P2,#01H ;清屏
CALL ENABLE ;寫到指令寄存器
MOV P2,#38H ;功能設定(8位,2行,5*7點陣)智表設計P236
CALL ENABLE
MOV P2,#00001100B ;顯示器ON,光標OFF,閃爍OFF
CALL ENABLE
MOV P2,#06H ;I/D=1,DDRAM地址加1,顯示器OFF
CALL ENABLE
S1 : MOV P2,#80H ;第一行字符起始地址
CALL ENABLE
JNB P1.6,S2
MOV DPTR,#TABLE0
AJMP S3
S2 : MOV DPTR,#TABLE1 ;顯示'Voltage'字符
S3 : CALL WRITE1
MOV A,BEGIN
CJNE A,#01H,S1
MOV P2,#0C0H ;第二行字符起始地址
CALL ENABLE
CALL WRITE2 ;顯示A/D采樣的數據
CALL SERCOM ;串行通訊
AJMP S1
ENABLE:CLR RS ;RS=0,寫到指令寄存器
CLR RW ;R/W=0
SETB E ;E 1→0 使能
CALL DELAY ;延時2.5ms
CLR E ;禁止
RET
WRITE1:MOV R1,#00H ;輸出字符的子程序
A1: MOV A,R1
MOVC A,@A+DPTR
CJNE A,#00H,A2
RET
A2: CALL WRITE3 ;寫到LCD ROM的子程序
INC R1
AJMP A1
WRITE2:MOV R0,#60H ;輸出數據的子程序,數據區地址
A3: MOV A,@R0
CALL WRITE3 ;寫到LCD ROM的子程序
INC R0
CJNE R0,#DAREND,A3
MOV R0,#60H
RET
WRITE3:MOV P2,A ;寫到LCD ROM的子程序
SETB RS
CLR RW
SETB E
CALL DELAY ;延時2.5ms
CLR E
RET
SERCOM:MOV R1,#00H ;輸出字符的子程序
A11: MOV A,R1
MOVC A,@A+DPTR
CJNE A,#00H,A12
AJMP A14
A12: MOV SBUF,A ;寫到LCD ROM的子程序
A16: JBC TI,A15
AJMP A16
A15: INC R1
AJMP A11
A14: MOV R0,#60H ;輸出數據的子程序,數據區地址
A4: MOV A,@R0
MOV SBUF,A
A6: JBC TI,A5
AJMP A6
A5: INC R0
CJNE R0,#DAREND,A4
RET
DELAY:MOV R4,#05H ;延時2.5ms子程序
D1: MOV R5,#0FFH
DJNZ R5,$
DJNZ R4,D1
RET
/* 趙營的畢業設計中斷寄存器使用情況
=================================================================
MCU-----89S52
R0 ----- 存數首地址 P1.0 = 0 ----- 2V檔位
R2 ----- 檔位值 P1.1 = 0 ----- 20V檔位
R3 ----- 定義小數點位 P1.2 = 0 ----- 200V檔位
R4 ----- 消隱標志位 P1.3 = 0 ----- 2000V檔位
=================================================================*/
INTUSE: ;中斷子程序
CLR EA
PUSH ACC
PUSH PSW
SETB PSW.3 ;切換寄存器組1
MOV A,#00H ;#00H,判斷是否首次!
CJNE A,INTNUM,NEXT ;是首次中斷嗎?非則轉NEXT
MOV R0,#DARSTART ;數據區首地址
MOV R2,#00H ;清檔位值
MOV R3,#00H ;清小數點位
MOV R4,#01H ;置消隱標志位
JNB P1.6,K0
SETB P1.4
AJMP K1
K0: CLR P1.4
K1: JB P1.5,POL ;置正負號
MOV DARPOLE,#2DH ;負顯示負號
AJMP K2
POL: MOV DARPOLE,#20H ;正則不顯示
K2: MOV A,P0 ;讀P0口,讀7135輸出的BCD碼
ANL A,#0F0H ;取高四位
SWAP A
ADD A,#30H
SETB P1.0 ;判檔位
SETB P1.1
SETB P1.2
SETB P1.3
JNB P1.0,IA1 ;是2V檔嗎?
INC R2
JNB P1.1,IA1 ;是20V檔嗎?
INC R2
JNB P1.2,IA1 ;是200V檔嗎?
INC R2
IA1: XCH A,R3 ;定義小數點位
MOV A,R2
ADD A,#62H
XCH A,R3
MOV DPOINT,R3
CJNE R2,#00H,IB0 ;是2V檔位
AJMP IB1
IB0: CJNE A,#30H,IB1 ;A是零嗎?
AJMP IB2
IB1: MOV R4,#00H ;清消隱標志位
AJMP IB3
IB2: MOV R4,#01H ;置標志位
ADD A,#70H
IB3: MOV @R0,A
INC R0
INC INTNUM ;中斷次數加1
RETN: POP PSW
POP ACC
SETB EA
RETI
NEXT: MOV A,R0
CJNE A,DPOINT,NEXT3 ;置小數點
MOV @R0,#2EH
INC R0
NEXT3:MOV A,P0
ANL A,#0F0H
SWAP A
ADD A,#30H
CJNE A,#30H,IC1
CJNE R4,#01H,IC2
CALL REMOVE
AJMP IC2
IC1: MOV R4,#00H
IC2: MOV @R0,A ;送到數據區
INC R0
INC INTNUM
MOV A,R0
CJNE A,#DAREND,RETN ;夠五次了嗎?
MOV INTNUM,#00H ;清中斷次數
MOV BEGIN,#01H
SJMP RETN
REMOVE:MOV R1,INTNUM ;消隱子程序
CJNE R1,#01H,IEE1 ;是第二次中斷嗎?
CJNE R2,#01H,IEE2 ;是20V檔嗎?
MOV R4,#00H
RET
IEE2:ADD A,#70H
RET
IEE1:CJNE R1,#02H,RETN2 ;是第三次中斷嗎?
CJNE R2,#03H,RETN2 ;是2000V檔嗎?
ADD A,#70H
MOV R4,#00H
RETN2:RET
TABLE0:DB 'Over!!!:',00H ;顯示字符,00H結束位
TABLE1:DB 'Voltage:',00H ;顯示字符,00H結束位
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -