流水燈和蜂鳴器
#先放原理圖
- 看原理圖它打了label,只是說明了哪些連在一起,關注點是哪些連在一起,哪個管腳該輸出0還是1,而不是它打的label名稱,你自己不必非得使用它提供的label名稱呀。
- 微控制器無非就是控制埠輸出0或1。燈的亮滅就是P1^0引腳的高低。程式裡面可以直接就P1^0=1地輸出1,但是打字多麻煩,所以要位定義,即sbit P1_0=P1^0
- 以上這兩點是整個微控制器的核心
#No1單個LED的亮滅
簡單的一個燈的亮滅,週期1秒
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P1_0=P1^0;//P1_0可以是任意變數,P1^0是位
void delay(); //一定要在main前面提前宣告
void main()
{
while(1)
{
P1_0=0;
delay();
P1_0=1;
delay();
}
}
void delay()//延時1秒,別動340引數了!
{
uint x,y;//區域性變數
for(x=340;x>0;x--)
{
for(y=340;y>0;y--)
{}
}
}
#No2流水燈和蜂鳴器使用
流水燈順次點亮,且每一個週期2秒,第1秒蜂鳴器響,第2秒蜂鳴器不響
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay();
sbit P2_0=P2^0; //對應蜂鳴器使用。除P2^0口外還可以使用其他任意埠
void main()
{
P2_0=1;
P1=0xfe; //對匯流排,直接操作。已經在<reg52.h>定義了。
while(1)
{
delay();
P2_0=~P2_0; //巧妙使用取反。位取反,但不僅僅限於一位的取反
delay();
P1=_crol_(P1,1);
}
}
void delay()
{
uint x,y;//區域性變數
for(x=340;x>0;x--)
{
for(y=340;y>0;y--)
{}
}
}
--------------------------------------------------------------------------
REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xP1_0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
#endif
/*--------------------------------------------------------------------------
INTRINS.H
Intrinsic functions for C51.
Copyright (c) 1988-2004 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __INTRINS_H__
#define __INTRINS_H__
extern void _nop_ (void);
extern bit _testbit_ (bit);
extern unsigned char _cror_ (unsigned char, unsigned char);
extern unsigned int _iror_ (unsigned int, unsigned char);
extern unsigned long _lror_ (unsigned long, unsigned char);
extern unsigned char _crol_ (unsigned char, unsigned char);
extern unsigned int _irol_ (unsigned int, unsigned char);
extern unsigned long _lrol_ (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
extern void _push_ (unsigned char _sfr);
extern void _pop_ (unsigned char _sfr);
#endif
這裡面就是函式的宣告
_crol_ 字元迴圈左移
_cror_ 字元迴圈右移
_irol_ 整數迴圈左移
_iror_ 整數迴圈右移
_lrol_ 長整數迴圈左移
_lror_ 長整數迴圈右移
_nop_ 空操作 (相當於8051 NOP 指令)
相關文章
- 有源蜂鳴器和無源蜂鳴器:
- 有源蜂鳴器和無源蜂鳴器的區別
- 有源蜂鳴器和無源蜂鳴器有什麼區別?
- 蜂鳴器的控制linuxLinux
- 關於有源蜂鳴器和無源蜂鳴器、時鐘極性與時鐘相位的理解
- 有源蜂鳴器和無源蜂鳴器各自的區別,其中通電區分是交流電還是直流電嗎
- UOS/deepin蜂鳴聲音
- 51微控制器實現流水燈
- 流水燈實現
- 12_QT跨平臺執行之使用QT控制蜂鳴器QT
- 一個51程式設計和模擬——流水燈程式設計
- 用鴻蒙OS在蜂鳴器上播放一曲《兩隻老虎》鴻蒙
- 微控制器三個引腳控制16路流水燈
- 51微控制器流水燈電路以及C程式碼C程式
- 《DNK210使用指南 -CanMV版 V1.0》第十三章 蜂鳴器實驗
- 順序賦值的方式實現流水燈賦值
- STM32流水燈在Protues上執行教程
- 【春節歌曲回味 | STM32小音樂盒 】PWM+定時器驅動無源蜂鳴器(STM32 HAL庫)定時器
- S5PV210 | 裸機彙編LED流水燈實驗
- 瀏覽器渲染流水線解析瀏覽器
- 燈燈燈
- 微控制器呼吸燈
- 基於EP4CE6F17C8的FPGA流水燈例項FPGA
- 使用CCS10新建TMS320F28335工程並閃爍LED(流水燈)程式S3
- MIPS 架構流水線處理器架構
- 加速器之警燈系統
- 使用Kubeflow構建機器學習流水線機器學習
- 【UE燈光•簡介】UE4光照型別和燈光引數型別
- blender eevee渲染器燈光設定
- 伺服器資料恢復-伺服器硬碟指示燈黃燈常亮的資料恢復案例伺服器資料恢復硬碟
- 路由器光訊號閃紅燈是什麼意思 路由器突然閃紅燈上不了網路由器
- DDD和維特根斯坦哲學之間的共鳴
- 智慧閘道器和交換機在智慧路燈杆上的用途差別
- 51微控制器串列埠交通燈protues模擬交通燈串列埠控制系統交通燈管制東西南北管制串列埠
- 流水線
- 用JS寫個小燈控制器唄JS
- 馬蜂窩 IM 系統架構的演化和升級架構
- [米聯客-安路飛龍DR1-FPSOC] FPGA基礎篇連載-05 FPGA流水燈實驗FPGA