單片機源程序如下:
- ;---------------------------------------------------------------------
- ;定義與 ADC 有關的特殊功能寄存器
- ADC_CONTR EQU 0C5H ;A/D 轉換控制寄存器
- ADC_DATA EQU 0C6H ;A/D 轉換結果寄存器
- P1M0 EQU 91H ;P1口模式寄存器0
- P1M1 EQU 92H ;P1口模式寄存器1
- CCON EQU 0D8H
- CMOD EQU 0D9H
- CCAP0L EQU 0EAH
- CCAP0H EQU 0FAH
- CCAP1L EQU 0EBH
- CCAP1H EQU 0FBH
- CCAPM0 EQU 0DAH
- CCAPM1 EQU 0DBH
- PCA_PWM0 EQU 0F2H
- PCA_PWM1 EQU 0F3H
- CR EQU 0DEH
- CL EQU 0E9H
- CH EQU 0F9H
- EPCA EQU IE.6
- ;---------------------------------------------------------------------
- ;---------------------------------------------------------------------
- main:
- ; ACALL initiate_RS232
- SETB P1.7 ;將 P1 口置高, 為 A/D 轉換作準備
- ORL ADC_CONTR, #80H ;1000,0000 打開 A/D 轉換電源
- MOV P1M0, #80H
- MOV CMOD,#82H
- MOV CCON,#00H
- MOV CL,#00H
- MOV CH,#00H
- MOV CCAPM1,#42H
- MOV PCA_PWM1,#00H
- SETB EPCA
- SETB EA
- SETB CR
- MOV 31H,#40H
- main_loop1:
- MOV ADC_CONTR, #0E7H ;1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位
- MOV ADC_DATA, #00 ;清 A/D 轉換結果寄存器
- ORL ADC_CONTR, #08H ;0000,1000 令 ADCS = 1, 啟動A/D轉換,
- finishe:
- MOV A, #10H ;0001,0000 測試A/D轉換結束否
- ANL A, ADC_CONTR
- JZ finishe
- ANL ADC_CONTR, #0E7H ;1110,0111 清 ADC_FLAG 位, 停止A/D轉換
- MOV A, ADC_DATA ;保存、返回 A/D 轉換結果
- CLR P3.7
- clr c
- subb a,#60h
- jc bhx
- mov a,#0
- ljmp fsw
- bhx: MOV A, ADC_DATA
- clr c
- subb a,31h
- jnc fsw
- mov a,#0
- fsw: MOV CCAP1H ,a;#0Ch
- MOV CCAP1L ,a
-
- JKW: SJMP main_loop1
- ;---------------------------------------------------------------------
- ;---------------------------------------------------------------------
- set_P1_IO_port: ;P1 口設置為普通 I/O 模式
- MOV P1M0, #00H
- MOV P1M0, #00H
- ANL ADC_CONTR, #7FH ;0111,1111 關閉 A/D 轉換電源
- RET
- ;---------------------------------------------------------------------
- initiate_RS232: ;串口初始化
- CLR ES ;禁止串口中斷
- MOV TMOD, #20H ;設置 T1 為波特率發生器
- MOV SCON, #50H ;0101,0000 8位數據位, 無奇偶校驗
- MOV TH1, #0FDH ;11.0592MHz 晶振, 波特率 = 9600
- MOV TL1, #0FDH
- CLR RI
- SETB TR1
- SETB ES ;允許串口中斷
- RET
- ;---------------------------------------------------------------------
- Send_Byte: ;發送一個字節
- CLR TI ;清零串口發送中斷標志
- ;mov a,ADC_DATA
- MOV SBUF, A
- Send_Byte_wait: ;等待發送完畢
- JNB TI, Send_Byte_wait
- CLR TI ;清零串口發送中斷標志
- RET
- ;--------------------------------------------------------------------------
- ;---------------------------------------------------------------------
- delay: ;延時
-
- MOV R4, #1
- delay_loop1:
- MOV R2, #18H
- MOV R3, #0
- delay_loop2:
- DJNZ R3, delay_loop2
- DJNZ R2, delay_loop2
- DJNZ R4, delay_loop1
- RET
- ;---------------------------------------------------------------------
- END
復制代碼
所有資料51hei提供下載:
STC單片機做的上拉式磁懸浮程序.rar
(1.71 KB, 下載次數: 62)
2018-7-8 11:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|