STC89C52单片机怎么编程使P2.3、P2.4、P2.5配置成开漏状态? STC89C52单片机C程序求解(有完整程序)

\u8c01\u4f1a\u7528C\u8bed\u8a00\u7f16\u5199\u7a0b\u5e8f\uff1a\u5173\u4e8e\u5355\u7247\u673aSTC89C52\u4fe1\u53f7\u4eceP3.2\u8f93\u5165,P2.5\u8f93\u51fa

#include sbit P3.2 = P3^2;sbit P2.5 = P2^5;int main(){ while (1) // loop { while (P3.2 == 1) // P3.2 \u8f93\u5165\u4e3a\u9ad8\u7535\u5e73 { P2.5 = 1; // P2.5 \u8f93\u51fa\u4e3a\u9ad8\u7535\u5e73 } while (P3.2 == 0) // P3.2 \u8f93\u5165\u4e3a\u4f4e\u7535\u5e73 { P2.5 = 0; // P2.5 \u8f93\u51fa\u4e3a\u4f4e\u7535\u5e73 } } return 0;}

\u6211\u7ed9\u4f60\u89e3\u91ca\u4e00\u4e0b\u5427 \u5e0c\u671b\u5e2e\u5f97\u4e0a\u4f60


#include // \u5934\u6587\u4ef6

#define uint unsigned int //\u5b8f\u5b9a\u4e49 \u628auint \u7b49\u4ef7\u4e3a unsigned int
#define uchar unsigned char

sbit CS = P2^0; //\u5b9a\u4e49\u4e09\u4e2a\u7279\u6b8a\u529f\u80fd\u4f4d\uff0c \u6211\u611f\u89c9\u5e94\u8be5\u662f\u9a71\u52a8\u4e00\u4e2a\u4e1c\u897f\u5427\uff0cCS
sbit CLK = P2^1; \u662f\u7247\u9009 \u9ad8\u9009\u4e2d\u6216\u8005\u4f4e\u9009\u4e2d\uff0c CLK\u662f\u901a\u4fe1\u7684\u65f6\u949f\u7ebf\uff0c
sbit SDO = P2^2; SDO\u5e94\u8be5\u662f\u9a71\u52a8\u82af\u7247\u7684\u6570\u636e\u8f93\u51fa\u53e3\uff0c \u4e0d\u8fc7\u5e94\u8be5\u6709\u8f93\u5165\u53e3\u7684\uff1f\uff1f
\u600e\u4e48\u6ca1\u770b\u5230\u7a0b\u5e8f\u91cc\u6709\uff1f\uff1f\uff1f\uff1f
void DELAY(void) //\u7b80\u5355\u7684\u5ef6\u65f6\u5b50\u7a0b\u5e8f
{
uint x,y;
for(y = 5;y > 0;y--)
for(x = 110;x > 0;x--);
}

void main(void)
{
uint i = 0;
uint j = 0;
uint k = 0; \u5b9a\u4e49\u4e09\u4e2a\u53d8\u91cf
TMOD = 0X20;
TH1 = 0XF3; \u5b9a\u65f6\u5668\u5de5\u4f5c\u65b9\u5f0f \u548c\u521d\u503c
TL1 = 0XF3;
TR1 = 1; \u6253\u5f00\u5b9a\u65f6\u5668
REN = 1; REN SM0 SM1 \u662f\u4e32\u53e3\u8fd9\u91cc\u7684\u8bbe\u7f6e \u5177\u4f53\u7684\u4f60\u81ea\u5df1\u770b\u6587\u6863 \u6211\u5c31\u4e0d
SM0 = 0; \u7ec6\u8bf4\u4e86
SM1 = 1;

while(1)
{
CLK = 0;
CS = 1;
SDO = 0;

DELAY();

for(i=0;i<16;i++) \u5faa\u73af16\u6b21 \u5e94\u8be5\u662f\u8981\u4f20\u8f932\u4e2a\u5b57\u8282\u7684\u6570\u636e\u5427\u5427
{
CS = 0; \u8fd9\u4e2a\u7247\u9009\u8c8c\u4f3c\u5e94\u8be5\u653e\u5728\u5faa\u73af\u5916\u9762
CLK = 1; \u65f6\u949f\u7ebf\u7684\u63a7\u5236
DELAY();
k = SDO; \u628a\u9a71\u52a8\u82af\u7247\u8f93\u51fa\u7684\u6570\u636e\u8d4b\u503c\u7ed9K
j = j + k;
j = j << 1; \u521a\u624d\u7684K \u53ea\u662f\u4e00\u4e2a\u4f4d\uff0c \u8fd9\u91cc\u4e24\u53e5\u662f\u8981\u628a\u5b83\u6574\u7406\u6210uint\u578b\u7684\u537316\u4f4d\u7684\uff0c
DELAY();
CLK = 0; \u8fdb\u884c\u5ef6\u65f6 \u548cCLK\u65f6\u949f\u63a7\u5236\uff0c\u5373\u6a21\u62df\u9a71\u52a8\u82af\u7247\u7684\u9a71\u52a8\u65f6\u5e8f
DELAY();
DELAY();
}

CS = 1; \u9009\u4e2d\u6216\u8005\u53d6\u6d88\u7247\u9009 \u6211\u611f\u89c9\u5e94\u8be5\u662f\u53d6\u6d88

SBUF = (j >> 8) & 0XFF; \u628a\u521a\u624d\u4ece\u9a71\u52a8\u82af\u7247\u91cc\u8bfb\u51fa\u7684uint 16\u4f4d\u6570\u636e \u53d6\u9ad8\u516b\u4f4d \u9001\u5165
while(!TI); \u4e32\u53e3\u7684SBUF \u5bc4\u5b58\u5668 \u8c8c\u4f3c\u662f\u8981\u4f20\u7ed9\u7535\u8111 \u6216\u8005\u4e0a\u4f4d\u673a\u8f6f\u4ef6
TI = 0; \u7b49\u5f85\u4f20\u8f93\u5b8c\u6210 \u6e05 \u6807\u5fd7\u4f4d

SBUF = j & 0XFF; \u628a\u521a\u624d\u4ece\u9a71\u52a8\u82af\u7247\u91cc\u8bfb\u51fa\u7684uint 16\u4f4d\u6570\u636e \u53d6\u4f4e\u516b\u4f4d \u9001\u5165
while(!TI); \u4e32\u53e3\u7684SBUF \u5bc4\u5b58\u5668 \u8c8c\u4f3c\u662f\u8981\u4f20\u7ed9\u7535\u8111 \u6216\u8005\u4e0a\u4f4d\u673a\u8f6f\u4ef6
TI = 0; \u7b49\u5f85\u4f20\u8f93\u5b8c\u6210 \u6e05 \u6807\u5fd7\u4f4d

\u4e0a\u9762\u8fd9\u6b21 \u6b63\u597d\u628a UINT\u578b\u7684 16\u4f4d 2\u4e2a\u5b57\u8282\u5168\u90e8\u4f20\u8f93\u5230\u4e0a\u4f4d\u673a

SBUF = 0XFF; \u6700\u540e\u5728\u4f20\u8f930xff \u8fd9\u4e2a\u6570\u636e\u7ed9\u4e0a\u4f4d\u673a
while(!TI);
TI = 0;
}
}

\u597d\u4e86 \u56de\u7b54\u5b8c\u4e86 \uff0c \u5e0c\u671b\u80fd\u5e2e\u5f97\u4e0a\u4f60\u3002

STC89C52单片机端口配置无法使用程序进行配置,因为这款单片机没有这种功能!只有P0口为漏极开路门,使用时需要外接上拉电阻!

可以使用寄存器和数据选择器构成多路数据总线,比如使用多个74HC573寄存器挂在P0口上,再使用74HC138选通不同的74HC573,从而实现端口复用!还有STC89C52是5v单片机,如果要和3.3V器件进行数据通信,可以使用74LVC4245电平转换芯片做转换!

STC89C52连接3.3V器件时,为防止3.3V器件承受不了5V,可将响应的IO口先串一个330欧的限流电阻到3.3V器件的IO口,响应的口外部加10K上拉电阻到VCC,这样高电平时3,3V,低电平0V,输入输出一切正常。

P0口外接上拉电阻,再用电压表测测

  • 闂: 姹傜敤C璇█鍐欎竴涓畝鍗曠殑STC89C52鍗曠墖鏈绋嬪簭
    绛旓細//瀹氭椂50ms IE|=0x82; TR0=1;}void main(){ Motor_L=Motor_R=1; InitTimer0(); while(1) { if(K0|K2) { Motor_L=0; Motor_R=1; time2s=40;//2s } if(K1|K3) { Motor_L=1; Motor_R=0; time2s=40; } ...
  • STC89C52鍗曠墖鏈鍏ラ棬鍩虹1璇
    绛旓細棣栧厛锛屼綘寰椾簡瑙g數鍘嬶細 STC89C52鎴栬90C52绛夐兘鏄5V鍗曠墖鏈锛屼粬浠殑渚涚數閮芥槸5V DC 涔熷氨鏄洿娴佺ǔ鍘嬬數婧愶紝涓鑸數鑴慤SB鎺ュ彛閮芥槸5V锛屼娇鐢ㄧ數鑴慤SB渚涚數鍗冲彲銆 褰撶劧锛屾湁涓浜涘紑鍙戞澘鏄甫鐢垫簮閫傞厤鍣ㄦ潵鐨勶紝涓鑸兘鏄摼鎺ョ數鑴戠殑鏁版嵁绾匡紝鐢辨暟鎹嚎渚涚數銆傚叾娆★紝浣犲緱浜嗚В浣犵殑寮鍙戞澘鏄惁甯︽湁鐢靛钩杞崲鑺墖銆 濡傛灉浣犵殑寮鍙戞澘甯...
  • STC89C52鍗曠墖鏈姹囩紪
    绛旓細;鐢ㄦ眹缂栬瑷缂栫▼濡備笅锛歄RG 0000H MOV A, #7FH MOV R2, #7 L: JNB F0, R RL A JMP O R: RR A O: MOV P1, A CALL DL ;寤舵椂 DJNZ R2, L MOV R2, #7 CPL F0 JMP L ;--- DL: ;寤舵椂瀛愮▼搴 DJNZ R7,DJNZ R7,DJNZ R6,...
  • 姹備竴娈STC89C52鍗曠墖鏈c璇█绋嬪簭,瑕佹眰鑳介氳繃涓插彛閫氫俊鐢辩數鑴戝悜鍗曠墖鏈哄彂閫...
    绛旓細include "reg52.h"define uchar unsigned char define uint unsigned int //--- sbit led = P1^0;sbit key = P0^0;sbit out1= P0^1;sbit out2= P0^2;uint run_cnt;uchar temp;//--- void send_one_byte(unsigned char tad ){ TI=0;SBUF=tad;//鍙戦佹暟鎹 os_wait2...
  • stc89c52鍗曠墖鏈C璇█缂栫▼:8涓狶ED鐏厛宸﹀惊鐜,鍐嶉棯鐑3娆,鏈鍚庡彸寰幆_鐧 ...
    绛旓細void delay(uint);void main(){ uchar i,j,k;uchar temp;temp=0xfe;while(1){ for(j=1;j>0;j--){ for(i=7;i>0;i--){ P1=temp;delay(200);temp=_crol_(temp,1);} P1=0xff;for(k=6;k>0;k--){ P1=~P1;delay(200);} for(i=7;i>0;i--){ P1=temp;delay(200)...
  • STC89C52 鐨鍗曠墖鏈C璇█瀹炵幇鏁扮爜绠℃樉绀轰换鎰忕殑涓涓洓浣嶆暟鍖呮嫭灏忔暟鐐筥鐧 ...
    绛旓細include<reg52.h> define uchar unsigned char define uint unsigned int sbit wr=P1^0;sbit cs1=P1^1;sbit cs2=P1^2;uchar q,w,a[8];uchar code zm[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,} void wx(uchar xx){ wr=0;cs2=0;P0=xx;wr=1;cs2=1;} v...
  • 鍗曠墖鏈篠TC89C52 缂栫▼闂
    绛旓細鍋囪P0鍙f帴LED;鐩存帴鍦ㄤ腑鏂▼搴忎腑鍐欙細P0=0XFF锛沝elayms(200);P0=0锛沝elayms(200);P0=0XFF锛沝elayms(200);P0=0锛沝elayms(200);P0=0XFF锛沝elayms(200);P0=0锛沝elayms(200);涓荤▼搴忎腑:while(1){ for(i=0;i<8;i++){ P0=1<<i;//鎴栬匬0=0XFE<...
  • stc89c52濡備綍鐑у綍绋嬪簭
    绛旓細1銆侀鍏堟墦寮鍦↘eil杞欢鍐欏ソ鐨勭▼搴忥紝鐐瑰嚮宸ュ叿鏍忎笂鐨則arget options...銆2銆佸湪Target閫夐」鏍忎腑锛岃緭鍏ヤ笌鑷繁浣跨敤寮鏉鍗曠墖鏈鎵鐢ㄦ櫠鎸浉鍚岀殑棰戠巼锛屽11.059 2MHz銆12MHz銆3銆佸湪output閫夐」鏍忎腑锛屽嬀閫変笂Create HEX file锛屽苟鐐瑰嚮纭畾銆4銆佸垎鍒偣鍑诲伐鍏锋爮涓殑Transtate锛宐uild锛宺ebuild銆5銆佹彁绀虹敓鎴愪簡HEX鏂囦欢锛...
  • 鍗曠墖鏈篠TC89C52鏄剧ず0-99鐨凜璇█绋嬪簭
    绛旓細include <reg52.h> include <stdio.h> include <intrins.h> define uchar unsigned char define uint unsigned int sbit sm1= P3^7;sbit sm2=P3^6;sbit sm3=P3^5;sbit sm4=P3^4;sbit led=P2^7;unsigned char table1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }...
  • STC89C52鍗曠墖鏈哄浣鍦ㄨ繍琛屾椂鍚慐EPROM鍐呭啓鍏ユ暟鎹,浣挎暟鎹柇鐢靛悗涓嶆秷澶...
    绛旓細1銆侀鍏堟墦寮鐢佃剳涓殑keil杞欢銆2銆佸湪椤甸潰涓偣鍑烩滃伐绋嬧濇柊寤轰竴涓伐绋嬶紝鍛藉悕涓衡滅偣浜甃ED鈥濓紝鐐瑰嚮纭畾銆3銆佸嚭鐜颁竴涓夋嫨鑺墖鍨嬪彿鐨勫璇濇锛岄夋嫨"Atmel"閲岄潰鐨勨89C52鈥濓紝鐐瑰嚮纭畾杩涜涓嬩竴姝ャ4銆佺偣鍑诲鍥炬墍绀猴紝鏂板缓涓涓枃浠讹紝鍦ㄦ枃浠堕噷鍏堣緭鍏ュ嚑涓瓧绗︺5銆佺劧鍚庣偣鍑荤獥鍙e彸涓婅鐨勬墦鍙夛紝鎺ヤ笅鏉ュ湪鍑虹幇鐨勫璇...
  • 扩展阅读:stc89c52好处 ... stc89c52rc最小系统板 ... stc89c52单片机最小电路 ... stc89c52rc怎么下载程序 ... 单片机stc89c52rc概述 ... stc89c52芯片简介 ... stc89c52按键 ... stc89c52芯片引脚 ... stc89c52单片机内部ram ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网