|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
595輸出異常(移位) |
| 作者:zellner 欄目:單片機 |
現(xiàn)在的問題是: 在 控制信號是 sck上升沿 /sckr 高 /g 低 實現(xiàn)的是595級聯(lián)的移位寄存器的功能 (mcu用的是WINBOND的W78E516B) 但是在輸入數(shù)據(jù)信號后,輸出結(jié)果卻是一連串的數(shù)據(jù) 請問達人,這個問題是什么原因? 控制代碼如下: /*********************************************** function:TEST for RELAY control-use 74HC595 author:XT date:051218 DESCRIPTION: sck---------D1--CLK ser---------D2--SIN rck---------D6--OUT-CLK /g----------P13 (先要去掉/sclr原來的連線) ***********************************************/ #include <Reg52.h> #include <absacc.h> #include <intrins.h> #define uCHAR unsigned CHAR #define uint unsigned int #define P377 0xaf00 uCHAR Out377 = 0; //sbit clk = P1^4; #define ser 0x04 #define clk 0x02 #define rck 0x40 sbit nRelay_en = P1^3; void delay(uint i) //此延時函數(shù)的精度為9us { while(i--); //ClearDog(); } void delay_s(void)//delay 1 s { int j; for(j=0;j<10;j++) delay(11111); //延時100000us } unsigned int OutBytes; void OutToRelay(void) { uCHAR j; int i; unsigned int k=0x01; unsigned int a; for(i=9;i>0;i--) { a= (k<<(i-1)) & OutBytes; Out377 &=~clk; //clk = 0; for(j=0;j<20;j++); if(a != 0) Out377 |= ser; //ser置1 else Out377&=~ser; //ser置0 XBYTE[P377]=Out377; for(j=0;j<20;j++); Out377 |=clk; XBYTE[P377]=Out377; for(j=0;j<20;j++); //clk = 1; for(j=0;j<20;j++); } Out377 &=~rck; XBYTE[P377]=Out377; for(j=0;j<20;j++); Out377 |=rck; XBYTE[P377]=Out377; for(j=0;j<20;j++); for(j=0;j<2;j++)delay_s(); } void main ( void ) { nRelay_en = 0; while (1) { OutBytes =0x73 ; OutToRelay(); delay_s(); delay_s(); OutBytes =0 ; OutToRelay(); delay_s(); delay_s(); /* OutBytes =0xff ; OutToRelay(); delay_s(); delay_s(); */ OutBytes =0xf0; OutToRelay(); delay_s(); delay_s(); } } |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |