久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
用51單片機制作多種頻率方波音頻信號發生器
[打印本頁]
作者:
Kxuan163
時間:
2020-12-17 15:30
標題:
用51單片機制作多種頻率方波音頻信號發生器
硬件:AT89s52開發板(含4x4數字鍵盤)
功能: 用按鍵選擇不同頻率方波,由P1.0輸出方波音頻信號
作者:Kxuan163
匯編語言源程序如下:
;;--------------------------------------------
ORG 0000H
AJMP MAIN
;;--------------------------------------------
ORG 001BH ;定時器T1中斷處理入口地址
AJMP T1_INT
;;--------------------------------------------
ORG 0030H ;主程序入口地址
MAIN: MOV SP,#60H
MOV 30H,#16 ;開機/復位顯示“-”,16是段碼表"-"偏移址
LOOP1: CALL KEY_SCAN ;掃描鍵盤
CALL KEYPLAER ;顯示按鍵數字
;;CLR P1.0 ;令輸出的初始狀態為低電平
MOV A, 30H ;按鍵順序號送至A
CJNE A, #16, OnKeyJmp ;若有按鍵,依鍵號跳轉某程序段
JMP LOOP1 ;若無按鍵,繼續掃描鍵盤
OnKeyJmp: RL A ;每條AJMP指令占2字節,按鍵順序號x2
MOV DPTR, #JmpTab ;散轉表首址送DPTR
JMP @A +DPTR ;依按鍵散轉
JmpTab: AJMP LOOP1 ;按0鍵,
AJMP OUT100 ;按1鍵,輸出100Hz方波
AJMP OUT200 ;按2鍵,輸出200Hz方波
AJMP OUT300 ;按3鍵,輸出300Hz方波
AJMP OUT400 ;按4鍵,輸出400Hz方波
AJMP OUT500 ;按5鍵, 輸出500Hz方波
AJMP OUT600 ;按6鍵, 輸出600Hz方波
AJMP LOOP1 ;按7鍵,
AJMP LOOP1 ;按8鍵,
AJMP LOOP1 ;按9鍵,
AJMP LOOP1 ;按A鍵,
AJMP LOOP1 ;按b鍵,
AJMP LOOP1 ;按C鍵,
AJMP LOOP1 ;按D鍵,
AJMP LOOP1 ;按E鍵,
AJMP LOOP1 ;按F鍵,
;;---------------------------------------------
KEY_SCAN: MOV P1,#0F0H ;置列線為0,行線為1
MOV A,P1
ANL A,#0F0H
MOV B,A
MOV P1,#0FH ;置列線為1,行線為0
MOV A,P1
ANL A,#0FH
ORL A,B ;高四位與低四位重新組合
CJNE A,#0FFH,KEY_IN1 ;0FFH為末按鍵
RET
KEY_IN1: MOV B,A
MOV DPTR,#KEYTABLE
MOV R3,#0FFH ;
KEY_IN2: INC R3 ;順序碼加1
MOV A,R3
MOVC A,@A+DPTR
CJNE A,B,KEY_IN3
MOV A,R3 ;找到,取順序碼
MOV 30H,A ;送顯示
RET
KEY_IN3: CJNE A,#00H,KEY_IN2 ;末完,繼續查
RET ;00H為結束碼
;;-------------------------------------------
KEYPLAER: MOV R3, 30H
MOV A, 30H
MOV DPTR,#TABLE ;取段碼表地址
MOVC A,@A+DPTR ;查顯示數據對應段碼
MOV P0,A ;段碼放入P0口
CLR P2.7 ;最右數碼管亮
RET
;;--------------------------------------------
;定時器T1預裝計數初值的計算:
;機器周期 =12/Fosc =12/(11.0592MHz) =1.08506944μs ≈1μs
;100Hz的半周期=(1/100)/2=5ms, 計數初值=65536-5000=60536=EC78h
;200Hz的半周期=(1/200)/2=2.5ms, 計數初值=65536-2500=63036=F63Ch
;300Hz的半周期=(1/250)/2=1.667ms,計數初值=65536-1667=63869=F97Dh
;400Hz的半周期=(1/400)/2=1.25ms, 計數初值=65536-1250=64286=FB1Eh
;500Hz的半周期=(1/500)/2=1ms, 計數初值=65536-1000=64536=FC18h
;600Hz的半周期=(1/600)/2=0.833ms,計數初值=65536-0833=64703=FCBFh
;;--------------------------------------------
OUT100: MOV R3,#0ECh ;;T1初值高8位
MOV R4,#78h ;;T1初值低8位
AJMP SET_T1 ;;T1初始化
;;--------------------------------------------
OUT200: MOV R3,#0F6h
MOV R4,#3Ch
AJMP SET_T1
;;--------------------------------------------
OUT300: MOV R3,#0F9h
MOV R4,#7Dh
AJMP SET_T1
;;--------------------------------------------
OUT400: MOV R3,#0FBh
MOV R4,#1Eh
AJMP SET_T1
;;--------------------------------------------
OUT500: ;;P1.0輸出500Hz方波
MOV R3,#0FCh
MOV R4,#18h
AJMP SET_T1
;;--------------------------------------------
OUT600: ;;P1.0輸出600Hz方波
MOV R3,#0FCh
MOV R4,#0BFh
AJMP SET_T1
;;--------------------------------------------
SET_T1: ;; T1初始化:
MOV TMOD, #00010000b ;; T1,定時模式,方式1,16位計數器
MOV TH1, R3 ;; 裝入計數初值高字節
MOV TL1, R4 ;; 裝入計數初值低字節
SETB TR1 ;; 啟動T1
SETB ET1 ;; 允許T1中斷
SETB EA ;; CPU開中斷
SJMP $ ;; 等待T1中斷
;;--------------------------------------------
T1_INT: ;; 定時器T1中斷處理程序
CPL P1.0 ;; 電平反轉,進入方波另半周期
MOV TH1, R3 ;; 重裝初值高8位
MOV TL1, R4 ;; 重裝初值低8位
RETI
;;--------------------------------------------
DLY1ms: MOV R6,#5 ;視覺暫留延時1ms
MOV R7,#100
DLY1msB: DJNZ R7,$
DJNZ R6,DLY1msB
RET
;; 5x100x2(1μs) =1000μs =1ms
;;--------------------------------------------
DLY2s: ;延時2000ms =2s
MOV R7,#16
DLY2sA: MOV R6,#250
DLY2sB: MOV R5,#250
DJNZ R5,$
DJNZ R6,DLY2sB
DJNZ R7,DLY2sA
RET
;; 16x250*250*2(1μs) =2000 0000μs =2s
;;--------------------------------------------
KEYTABLE: DB 0EEH,0EDH,0EBH,0E7H,0DEH ;0,1,2,3,4, 順序碼
DB 0DDH,0DBH,0D7H,0BEH,0BDH ;5,6,7,8,9,
DB 0BBH,0B7H,07EH,07DH,07BH ;A,B,C,D,E,
DB 077H,00H ;F, 00為結束碼
;;---------------------------------------------
;;共陽極數碼段碼表:
;;字符 0 1 2 3 4 5 6 7
TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
;;------------------------------------------
;;字符 8 9 A b C d E F 中橫 上橫 下橫
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH,0FEH,0F7H
;;--------------------------------------------
;;字符 . P U Γ Y 8. "滅" Π L J
DB 7FH,82H,0C1H,0CEH,91H,00H,0FFH,0C8H,0C7H,0F1H
;;--------------------------------------------
END ;主程序結束
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
美女福利视频一区
|
一区视频
|
97久久精品午夜一区二区
|
一区二区三区四区电影视频在线观看
|
亚洲激情在线观看
|
久草成人
|
欧美操操操
|
国产精品久久
|
久久久这里都是精品
|
国产成人精品av
|
日韩欧美国产一区二区
|
亚洲精品第一国产综合野
|
久久九七
|
国产一级片网站
|
成人深夜福利
|
国产日产久久高清欧美一区
|
久久久妇女国产精品影视
|
久久精品亚洲精品
|
午夜激情免费视频
|
国产成人综合网
|
91大神在线看
|
日韩a在线观看
|
av一区二区三区四区
|
欧美黄 片免费观看
|
夜夜骑av
|
男人av网
|
奇米四色影视
|
亚洲欧美中文字幕在线观看
|
亚洲国产精品久久久久
|
一二区视频
|
在线成人免费观看
|
国产高清在线观看
|
91久久精品国产91久久性色tv
|
国产成人综合久久
|
免费看日韩视频
|
奇米影视在线
|
日本涩涩视频
|
国产精品高清在线
|
一级黄色毛片免费
|
国产精品欧美一区二区三区不卡
|
亚洲网视频
|