1. 程式人生 > >微控制器程式設計,輸出週期為2S和0.5S的方波

微控制器程式設計,輸出週期為2S和0.5S的方波

在80C51微控制器中,已知時鐘頻率為 6MHz,請程式設計使 P1.0 和 P1.1 分別輸出週期為 2s 和 0.5s 的方波。
求答案,過程。
懸賞分:50 - 解決時間:2010-1-7 17:16
;=====================================
最佳答案:
;-------------------------------------
;下列程式,經過編譯、模擬,符合要求:
;-------------------------------------
    ORG  0000H
    SJMP START
    ORG  000BH
    SJMP T0_INT
;-------------------------------------
START:
    MOV  TMOD, #01H
    MOV  TH0, #9EH
    MOV  TL0, #58H          ;

[email protected]
    SETB TR0
    SETB ET0
    SETB EA
    MOV  R2, #5
    MOV  A,   #0
    CLR  P1.0
    CLR  P1.1
    SJMP $                  ;原地轉移,假死,等待中斷
;-------------------------------------
T0_INT:                     ;50ms執行一次
    MOV  TH0, #9EH          ;重新賦初始值
    MOV  TL0, #58H          ;[email protected]

    DJNZ R2, T0_END         ;不到5次,轉到退出
;                           ;下列指令都是每隔250ms執行一次
    MOV  R2, #5             ;重新設定
    INC  A                  ;計數器加一
    MOV  C, ACC.0
    MOV  P1.1, C            ;P1.1,每隔250ms,變化一次
    MOV  C, ACC.2
    MOV  P1.0, C            ;P1.0,每隔1s,變化一次
T0_END:
    RETI
;-------------------------------------
    END
;-------------------------------------
回答者: 做而論道 - 十二級   2010-1-7 12:54
提問者對於答案的評價:xiexie
原文網址:
http://zhidao.baidu.com/question/132367773.html

;-------------------------------------

後記:

題目要求輸出兩個波形的週期是個4倍的關係,這一點,被做而論道發現並巧妙的利用了。
程式中只使用了一個計數器ACC,它的相鄰兩位之間的變化時間,是呈2倍的關係;
而其第0位和第2位,就是4倍的關係,把它們輸出,即可得到所需的週期波形。
呵呵,做而論道的程式,所使用的資源,是最低的;執行效率也最高,不知網友們認為如何?

相關推薦

微控制器程式設計輸出週期2S0.5S

在80C51微控制器中,已知時鐘頻率為 6MHz,請程式設計使 P1.0 和 P1.1 分別輸出週期為 2s 和 0.5s 的方波。求答案,過程。懸賞分:50 - 解決時間:2010-1-7 17:16 ;=====================================最佳答案:;--------

通過pandoc轉化markdowndocxhtml

pandoc blog cnblogs brush -o doc true .html ocx 轉化為docx pandoc -f markdown -t docx collection.markdown -o api.docx 轉化為html pandoc coll

通過SmarRefresLayou框架,你520你願媽媽

亮顯 web前端 提示 裁剪 沒有 集中 模型 安裝 mic 不少國內空間的新手站長,當使用了SSL證書之後,發現瀏覽器有s效果了,但是沒有綠鎖,谷歌瀏覽器提示“您與此網站建立的連接並非完全安全解決” 這種 當軟件實現了新功能後,準備發布版本前,往往需要進行一輪性能測試以確

c++ 模版程式設計構造迭代器雙向連結串列

#pragma once #include <iostream> #include <stdexcept> #include "func.h" // 連結串列 template <typename T>class li

輸入一個五位整數將它反向輸出。例如輸入12345輸出54321。

這個程式是我對建構函式有個更深的認識。 首先建構函式要先從頭至尾走一邊才會輸出,無論輸出語句加的位置(迴圈內,條件語句內...除外)。 然後建構函式遞迴可以把問題簡單化,本題如果按常規思路,應該是做個迴圈,把各個數首尾交換。但是用呼叫使得其可以一次輸出一位數,而並不是輸出一個數組。 這道題使我開闊了程式設計思

android物聯網初步利用手機藍芽與微控制器通訊實現led燈開關定時

                轉載請註明出處。                 這次是一個課程設計,利用微控制器開發一個物聯網系統。我們利用了手機藍芽與單片機板子上的藍芽通訊,通過 控制訊號來控制微控制器上led燈的亮滅和定時。  網上有很多的搜尋藍芽的例程,大家可以自己

c語言輸入年月日輸出該日該年中的第多少天

#include <stdio.h>int main(){int year=0;int mouth=0;int day=0;int sun=0;printf("請輸入年月日");scanf("%d %d %d",&year,&mouth,&

Go語言學習筆記8: log的使用輸出到日誌檔案輸出到mongodb

參考了國外友人的方案:https://stackoverflow.com/questions/40396499/go-create-io-writer-inteface-for-logging-to-mongodb-database 1.輸出日誌到檔案 func CreateDir(dir st

取出一個字串中字母出現的次數。如:字串:"abcdekka27qoq" 輸出格式: a(2)b(1)k(2)

package com.heima.test; import java.io.FileWriter; import java.io.IOException; import java.util.Comp

(C語言列印圖形題5)程式設計輸入n輸出如下例(n=4)所示的高上底均n的等腰梯形。

程式設計,輸入n,輸出如下例(n=5)所示的高和上底均為n的等腰梯形。                        ****                      ******        

用C程式設計設定兩個外部中斷(INT0INT1)按鍵優先順序IP=0x04即把外部中斷1設定高階優先順序外部中斷0低階優先順序使外部中斷1巢狀在外部中斷0中。

問題 用C程式設計,設定兩個外部中斷(INT0和INT1)按鍵,優先順序IP=0x04,即把外部中斷1設定為高階優先順序,外部中斷0為低階優先順序,使外部中斷1巢狀在外部中斷0中。 要求:中斷觸發方式為下降沿觸發,按鍵有消抖功能 模擬 程式碼 #include <

已知雞兔的總數量n總腳數m。輸入nm依次輸出兔的數目。如果無解輸出“no answer”。 將下面的程式碼填寫完整。

撰寫人——軟工二班——陳喜平 題目描述 已知雞和兔的總數量n,總腳數為m。輸入n和m,依次輸出雞和兔的數目。如果無解,輸出“no answer”。 將下面的程式碼填寫完整。 #include <stdio.h> int main() { int m,n,x,y;

輸入一個正整數n輸出所有n的連續正整數序列

1 public static void main(String[] args) { 2 Scanner sc = new Scanner(System.in); 3 while (true) { 4 System.out.prin

C程式設計——給一串數打印出裡面100的兩個數

**1、**程式 #include <stdio.h> #include <string.h> int main() { int arr[99] = {0}; int count = 0; printf("請輸入需要進行查詢的數列:"); do{

輸入一個正數n輸出所有n的連續正數序列。

public class b { public static void main(String[] args) { getlx(15); } private static void getlx(int n) { //定義最小序列 int min = 1;

計算字元個數寫出一個程式接受一個有字母數字以及空格組成的字串一個字元然後輸出輸入字串中含有該字元的個數。不區分大小寫。

寫出一個程式,接受一個有字母和數字以及空格組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。 自己編寫的一個程式,聽牛客網的左神說程式設計也跟高考一樣要不斷地刷題才會有感覺,自

MATLABVS混合程式設計除錯C程式設定的斷點顯示“當前不會命中斷點 還沒有該文件載入任何符號”

        我遇到的問題是matlab和c++混合程式設計,但是在matlab中進行除錯的時候需要呼叫VS2013除錯cpp程式,但是設定的斷點總是出現“當前不會命中斷點 還沒有為該文件載入任何符號”,網上的方法我都試過了,沒有用,自己試出來的方法記錄一下,可能並不適合

程式設計題:從n個數中選取m個數計算m個數的s判斷剩餘n-m個數中是否存在等於s的數如果存在輸出最大值

描述:從n個數中選取m個數,計算m個數的和s,判斷剩餘n-m個數中是否存在等於s的數,如果存在,輸出最大值。第一行輸入n和m值,第二行輸入n個數,輸出最大值。例如:輸入:6 2          1 2 5 3 7 4輸出:7分析:1+2=3;2+5=7;2+3=5;3+4=

c++入門:輸入一個字串將其分段輸出分段符除字母數字之外的符號。

輸出 輸入一個字串 樣例輸入 ad/adfa,123d?a1 樣例輸出 ad adfa 123d a1#include<iostream> #include<string.h>