void HT1621_WRITE_DATA(uchar write_addr,uchar write_data) { uchar i; HT1621_CS=0; HT1621_CLK=0; HT1621_DATA=1; //WRITE MODE ID '101' _nop_(); HT1621_CLK=1; _nop_(); HT1621_CLK=0; HT1621_DATA=0; _nop_(); HT1621_CLK=1; _nop_(); HT1621_CLK=0; HT1621_DATA=1; _nop_(); HT1621_CLK=1; _nop_(); HT1621_CLK=0; write_addr<<=2; //SENDING MEMORY ADDRESS FOR SELECTING SEGMENT for(i=0;i<6;i++) { if(write_addr>=0x80) HT1621_DATA=1; else HT1621_DATA=0; HT1621_CLK=1; _nop_(); _nop_(); HT1621_CLK=0; _nop_(); write_addr<<=1; } for(i=0;i<4;i++) //SENDING MEMORY CONTENT FOR DECIDING COMMENT'S STATE { if(write_data&0x01) HT1621_DATA=1; else HT1621_DATA=0; HT1621_CLK=1; _nop_(); _nop_(); HT1621_CLK=0; write_data>>=1; _nop_(); } HT1621_CS=1; }
时间: 2024-04-12 08:33:38 浏览: 158
ht1621的一个驱动程序
这段代码是一个名为`HT1621_WRITE_DATA`的函数,用于向HT1621 LCD的指定存储器地址写入数据。
在函数内部,进行了一系列的操作来实现数据的写入:
1. 将片选引脚`HT1621_CS`置低表示选中HT1621 LCD。
2. 将时钟引脚`HT1621_CLK`置低。
3. 将数据引脚`HT1621_DATA`置为1,表示写模式ID '101'。
4. 进行一系列的时钟操作,以发送写模式ID '101'。
5. 将待写入的地址左移2位,用于选择段。
6. 循环6次,根据地址的每一位,将数据写入HT1621 LCD。
7. 循环4次,根据待写入的数据的每一位,将数据写入HT1621 LCD。
8. 将片选引脚`HT1621_CS`置高,表示结束数据传输。
通过这些操作,可以将数据写入指定的存储器地址。
请注意,在这段代码中,涉及到了一些宏定义的引脚变量(如`HT1621_CS`、`HT1621_CLK`、`HT1621_DATA`),这些变量在之前的代码中有对应的管脚声明。
希望对您有所帮助!如果还有其他问题,请随时提问。
阅读全文