久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2861|回復: 1
打印 上一主題 下一主題
收起左側

單片機PWM波驅動直流電機-匯編語言程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:301181 發表于 2018-7-22 09:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1、P1.0 控制 A 端,B 端接 Vcc,利用定時器在 P1.0 口產生占空比固定(自定)的 PWM 波形來驅動直流電機
2、利用 KEY1 和 KEY2,兩個按鍵來動態調整 PWM 的占空比,控制直流電機轉速

/* 直流電機固定占空比 50%
ORG 0000H;  方波
LJMP START;
ORG 0100H;
START:CLR P1.0; 初始化頻 P1.0=0
MOV TMOD,#00H; T0 工作于定時方式 0
MOV TH0,0FFH; 設置初值
MOV TL0,0D2H;
SETB TR0; 啟動 T0 工作
BACK: JBC TF0,BACK1; 50us 到,轉到 BACK1
SJMP BACK; 不到,繼續查詢
BACK1:NOP; 微調時間
CPL P1.0; 取反 P1.0
SJMP BACK;
END;

直流電機改變 PWM
PWMH DATA  30H ;高電平脈沖的個數
PWM  DATA  31H ;PWM 周期
COUNTER  DATA  32H ;計數器計數
TEMP DATA  33H ;暫存
ORG 0000H
LJMP MAIN
ORG  000BH
LJMP  INTT0
ORG  0100H
MAIN:
MOV  SP,#60H  ;給堆棧指針賦初值
MOV  PWMH,#02H  ;高電平脈沖數賦
初值
MOV  COUNTER,#01H ;計數器賦初值
MOV PWM,#15H  ;周期賦初值
MOV  TMOD,#00H  ;定時器 0 在模式
0 下工作
MOV  TL0,#0FFH ;定時器每200us產生一
次溢出
MOV  TH0,#0EFH ;自動重裝的值
SETB  ET0 ;使能定時器 0 中斷
SETB  EA ;使能總中斷
SETB  TR0 ;開始計時
KSCAN:
JNB P1.1,K1CHECK  ;掃描 KEY1,
JNB P1.2,K2CHECK  ;掃描 KEY2,如果按下 KEY2,
跳轉到 KEY2 處理程序
SJMP  KSCAN
K1CHECK:
LCALL DELAY
JB  P1.1,KSCAN ;延時去抖動
BACK0:
JNB P1.1,BACK0;確認是否閉合
;LCALL DELAY; 延時
;JNB P1.1,BACK0;
SJMP K1HANDLE;確認按下,轉去處理程序
K1HANDLE:
MOV  A,PWMH
CJNE  A,PWM,K1H0 ;判斷是否到達上邊界
SJMP  KSCAN ;是,則不進行任何操作
K1H0:
MOV  A,PWMH
INC A
CJNE  A,PWM,K1H1 ;如果在加 1 后到達最大值
CLR TR0 ;定時器停止
SETB  P1.0 ;P1.0 為高電平
SJMP  K1H2
K1H1:
CJNE  A,#02H,K1H2 ;如果加 1 后到達下邊界
SETB  TR0 ;重開定時器
K1H2:
INC PWMH ;增加占空比
SJMP  KSCAN
K2CHECK:
LCALL DELAY
JB  P1.2,KSCAN ;延時去抖動
BACK1:
JNB P1.2,BACK1;確認是否閉合
;LCALL DELAY; 延時
;JNB P1.2,BACK1; 按下,松開兩個抖動
SJMP K2HANDLE;確認按下,轉去處理程序
K2HANDLE:
MOV  A,PWMH
CJNE  A,#01H,K2H0 ;判斷是否到達下邊界
SJMP  KSCAN ;是,則不進行任何操作
K2H0:
MOV  A,PWMH
MOV  TEMP,PWM
DEC A
CJNE  A,#01H,K2H1 ;如果在減 1 后到達下邊界
CLR TR0 ;定時器停止
CLR P1.0 ;P1.0 為低電平
SJMP  K2H2
K2H1:
DEC TEMP
CJNE  A,TEMP,K2H2 ;如果到達上邊界
SETB  TR0 ;啟動定時器
K2H2:
DEC PWMH ;降低占空比
SJMP  KSCAN ;
DELAY:
PUSH PSW; 去抖動延時
MOV R6,#09FH;
D1: MOV R7,#0F9H;
D2: DJNZ R7,D2;
DJNZ R6,D1;
POP PSW;
RET
INTT0: 中斷程序
PUSH  PSW ;現場保護
PUSH  ACC
INC COUNTER  ;計數值加 1
MOV  A,COUNTER
CJNE  A,PWMH,INTT01 ;如果等于高電平脈沖數
CLR P1.0 ;P1.0 變為低電平
INTT01:
CJNE  A,PWM,INTT02 ;如果等于周期數
MOV  COUNTER,#01H ;計數器復位
SETB  P1.0 ;P1.0 為高電平
INTT02:
POP ACC ;出棧
POP PSW
RETI
END;


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:301181 發表于 2018-7-22 09:21 | 只看該作者
經過實踐確實可行,但是我用的單片機型號STC15F2K60S2
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产免费看| 日韩成人在线播放 | 黄视频网址 | 亚洲欧美一区二区三区在线 | 亚洲一区二区免费视频 | 中文字幕一区二区三区乱码在线 | 盗摄精品av一区二区三区 | 成人精品在线观看 | 视频一区二区在线 | 日韩成人精品在线观看 | 欧美日韩精品中文字幕 | 中文字幕 在线观看 | 国产一区在线免费 | 亚洲精品一区中文字幕乱码 | 成人一级视频在线观看 | 一级片在线观看 | 懂色中文一区二区三区在线视频 | 2020国产在线 | 亚洲精品1| 国产视频线观看永久免费 | 国产区在线观看 | 97成人精品 | 日韩成人影院在线观看 | 成人在线观看免费 | 精品综合久久久 | 久久国产成人精品国产成人亚洲 | 99精品久久久久 | av在线天堂网 | 一本大道久久a久久精二百 国产成人免费在线 | 国产精品久久久久久久久久久久久 | 国产精品久久久久久久久大全 | 国产精品久久久久久 | 亚洲一区二区在线视频 | 日本天堂视频 | 亚洲午夜三级 | 亚洲精品在线免费播放 | 亚洲一级视频在线 | 亚洲九九精品 | 一级黄色片在线免费观看 | 91麻豆精品一区二区三区 | 蜜桃在线视频 |