⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 urw.lst

📁 使用ATMEGA128加CH375对U盘扇区进行读写,本程序在ICCAVR上调试,并在相应硬件电路上调试通过!供参考用
💻 LST
📖 第 1 页 / 共 5 页
字号:
    043D 9478      BSET	7
    043E 9508      RET
(0070)  //all peripherals are now initialized
(0071) }
(0072) /*void main()
(0073) {
(0074)     int i;
(0075) 	unsigned char readXDIV;
(0076) 	
(0077)     init_devices();
(0078)  	initLCDM();     //初始化LCD
(0079) 	Welcome_interface();  //显示欢迎界面 
(0080)  for ( i=1; i<=48;i++) 
(0081)   {
(0082)      PORTG &= 0x04;
(0083)      PORTG ^= 0X01;
(0084)      PORTG ^= 0x02;
(0085)   }
(0086)  while(1)
(0087)  { 
(0088)   ;// portout = 0xaa;
(0089)  }
(0090) }*/
(0091) //============================
(0092) void initLCDM(void)
(0093) {
(0094)     PORTF |= 0XFF;
_initLCDM:
    043F 91800062  LDS	R24,0x62
    0441 6F8F      ORI	R24,0xFF
    0442 93800062  STS	0x62,R24
(0095)     SetCS;
    0444 9A96      SBI	0x12,6
(0096) 	SetRD;
    0445 9A95      SBI	0x12,5
(0097) 	SetWR;
    0446 9A97      SBI	0x12,7
(0098) 	SetRS;
    0447 9A18      SBI	0x03,0
(0099)    // SetRST;
(0100) 	//delay_ms(30);
(0101) 	//ClrRST;
(0102) 	//delay_ms(800);
(0103)   //  SetRST;
(0104) 	//delay_ms(10);//
(0105) 	SdCmd(0xa0,0x07); LCD_ChkBusy();  //使能 BUSY 输出
    0448 E027      LDI	R18,7
    0449 E030      LDI	R19,0
    044A EA00      LDI	R16,0xA0
    044B E010      LDI	R17,0
    044C D062      RCALL	_SdCmd
    044D D099      RCALL	_LCD_ChkBusy
(0106) 	SdCmd(0x81,0x40); LCD_ChkBusy();   //by default	
    044E E420      LDI	R18,0x40
    044F E030      LDI	R19,0
    0450 E801      LDI	R16,0x81
    0451 E010      LDI	R17,0
    0452 D05C      RCALL	_SdCmd
    0453 D093      RCALL	_LCD_ChkBusy
(0107) 	SdCmd(0x00,0xCD); LCD_ChkBusy();  //Whole Chip LCD Controller Reg(Char Mode)
    0454 EC2D      LDI	R18,0xCD
    0455 E030      LDI	R19,0
    0456 2700      CLR	R16
    0457 2711      CLR	R17
    0458 D056      RCALL	_SdCmd
    0459 D08D      RCALL	_LCD_ChkBusy
(0108) 	SdCmd(0x01,0xf2); LCD_ChkBusy();   //BUSY=HiPolity, ClockOut=enable, InternalFreq=4MHz 	
    045A EF22      LDI	R18,0xF2
    045B E030      LDI	R19,0
    045C E001      LDI	R16,1
    045D E010      LDI	R17,0
    045E D050      RCALL	_SdCmd
    045F D087      RCALL	_LCD_ChkBusy
(0109) 	SdCmd(0x10,0x29); LCD_ChkBusy();   //Whole Chip Cursor Control Reg(disable cursor)
    0460 E229      LDI	R18,0x29
    0461 E030      LDI	R19,0
    0462 E100      LDI	R16,0x10
    0463 E010      LDI	R17,0
    0464 D04A      RCALL	_SdCmd
    0465 D081      RCALL	_LCD_ChkBusy
(0110) 	SdCmd(0x11,0x10); LCD_ChkBusy();  //Distance of Words or Lines Reg(cursor=1,gap=0)
    0466 E120      LDI	R18,0x10
    0467 E030      LDI	R19,0
    0468 E101      LDI	R16,0x11
    0469 E010      LDI	R17,0
    046A D044      RCALL	_SdCmd
    046B D07B      RCALL	_LCD_ChkBusy
(0111) 	SdCmd(0x90,0x05); LCD_ChkBusy();  //Shift Clock Control Reg(320x240,69Hz)
    046C E025      LDI	R18,5
    046D E030      LDI	R19,0
    046E E900      LDI	R16,0x90
    046F E010      LDI	R17,0
    0470 D03E      RCALL	_SdCmd
    0471 D075      RCALL	_LCD_ChkBusy
(0112)     SdCmd(0xf0,0xa0); LCD_ChkBusy();   //Font Control Reg
    0472 EA20      LDI	R18,0xA0
    0473 E030      LDI	R19,0
    0474 EF00      LDI	R16,0xF0
    0475 E010      LDI	R17,0
    0476 D038      RCALL	_SdCmd
    0477 D06F      RCALL	_LCD_ChkBusy
(0113) 	SdCmd(0xf1,0x0f); LCD_ChkBusy();   //设置字型大小
    0478 E02F      LDI	R18,0xF
    0479 E030      LDI	R19,0
    047A EF01      LDI	R16,0xF1
    047B E010      LDI	R17,0
    047C D032      RCALL	_SdCmd
    047D D069      RCALL	_LCD_ChkBusy
(0114) 	SdCmd(0x20,0x27); LCD_ChkBusy();  //Active Window Right  Reg
    047E E227      LDI	R18,0x27
    047F E030      LDI	R19,0
    0480 E200      LDI	R16,0x20
    0481 E010      LDI	R17,0
    0482 D02C      RCALL	_SdCmd
    0483 D063      RCALL	_LCD_ChkBusy
(0115) 	SdCmd(0x30,0xef); LCD_ChkBusy();   //Active Window Bottom Reg(240 duty)
    0484 EE2F      LDI	R18,0xEF
    0485 E030      LDI	R19,0
    0486 E300      LDI	R16,0x30
    0487 E010      LDI	R17,0
    0488 D026      RCALL	_SdCmd
    0489 D05D      RCALL	_LCD_ChkBusy
(0116) 	SdCmd(0x40,0x00); LCD_ChkBusy();   //Active Window Left   Reg
    048A 2722      CLR	R18
    048B 2733      CLR	R19
    048C E400      LDI	R16,0x40
    048D E010      LDI	R17,0
    048E D020      RCALL	_SdCmd
    048F D057      RCALL	_LCD_ChkBusy
(0117) 	SdCmd(0x50,0x00); LCD_ChkBusy();   //Active Window Top    Reg
    0490 2722      CLR	R18
    0491 2733      CLR	R19
    0492 E500      LDI	R16,0x50
    0493 E010      LDI	R17,0
    0494 D01A      RCALL	_SdCmd
    0495 D051      RCALL	_LCD_ChkBusy
(0118) 	SdCmd(0x21,0x27); LCD_ChkBusy();   //Display Window Right  Reg
    0496 E227      LDI	R18,0x27
    0497 E030      LDI	R19,0
    0498 E201      LDI	R16,0x21
    0499 E010      LDI	R17,0
    049A D014      RCALL	_SdCmd
    049B D04B      RCALL	_LCD_ChkBusy
(0119)  	SdCmd(0x30,0xef); LCD_ChkBusy(); // Display Window Bottom Reg(240 duty)
    049C EE2F      LDI	R18,0xEF
    049D E030      LDI	R19,0
    049E E300      LDI	R16,0x30
    049F E010      LDI	R17,0
    04A0 D00E      RCALL	_SdCmd
    04A1 D045      RCALL	_LCD_ChkBusy
(0120) 	SdCmd(0x41,0x00); LCD_ChkBusy();   //Display Window Left   Reg
    04A2 2722      CLR	R18
    04A3 2733      CLR	R19
    04A4 E401      LDI	R16,0x41
    04A5 E010      LDI	R17,0
    04A6 D008      RCALL	_SdCmd
    04A7 D03F      RCALL	_LCD_ChkBusy
(0121)     SdCmd(0x51,0x00); LCD_ChkBusy();  // Display Window Top    Reg
    04A8 2722      CLR	R18
    04A9 2733      CLR	R19
    04AA E501      LDI	R16,0x51
    04AB E010      LDI	R17,0
    04AC D002      RCALL	_SdCmd
    04AD D039      RCALL	_LCD_ChkBusy
    04AE 9508      RET
(0122) }
(0123) //====================================
(0124) //-----------------------------------
(0125) void SdCmd(uchar Command,uchar Com_Data)   //send command
(0126) {   
(0127)    SetWR;
_SdCmd:
  Com_Data             --> R18
  Command              --> R16
    04AF 9A97      SBI	0x12,7
(0128)    SetRD;
    04B0 9A95      SBI	0x12,5
(0129)    ClrRS;   //RS = 0 输入命令  
    04B1 B183      IN	R24,0x03
    04B2 7F8E      ANDI	R24,0xFE
    04B3 B983      OUT	0x03,R24
(0130)    ClrCS;
    04B4 B382      IN	R24,0x12
    04B5 7B8F      ANDI	R24,0xBF
    04B6 BB82      OUT	0x12,R24
(0131)    PORTF = Command;
    04B7 93000062  STS	0x62,R16
(0132)     asm(" nop ");
    04B9 0000      NOP
(0133)    ClrWR;  //写使能
    04BA B382      IN	R24,0x12
    04BB 778F      ANDI	R24,0x7F
    04BC BB82      OUT	0x12,R24
(0134)    asm(" nop ");   // 8MHZ 执行一条指令大约125ns
    04BD 0000      NOP
(0135)    asm(" nop ");
    04BE 0000      NOP
(0136)    SetWR;
    04BF 9A97      SBI	0x12,7
(0137)    SetCS;
    04C0 9A96      SBI	0x12,6
(0138) //====================================
(0139)    asm(" nop ");   // 8MHZ 执行一条指令大约125ns
    04C1 0000      NOP
(0140)    asm(" nop ");
    04C2 0000      NOP
(0141)    SetWR;
    04C3 9A97      SBI	0x12,7
(0142)    SetRD;
    04C4 9A95      SBI	0x12,5
(0143)    ClrRS;   //RS = 0 输入命令  
    04C5 B183      IN	R24,0x03
    04C6 7F8E      ANDI	R24,0xFE
    04C7 B983      OUT	0x03,R24
(0144)    ClrCS;
    04C8 B382      IN	R24,0x12
    04C9 7B8F      ANDI	R24,0xBF
    04CA BB82      OUT	0x12,R24
(0145)    PORTF = Com_Data;
    04CB 93200062  STS	0x62,R18
(0146)     asm(" nop ");
    04CD 0000      NOP
(0147)    ClrWR;  //写使能
    04CE B382      IN	R24,0x12
    04CF 778F      ANDI	R24,0x7F
    04D0 BB82      OUT	0x12,R24
(0148)    asm(" nop ");   // 8MHZ 执行一条指令大约125ns
    04D1 0000      NOP
(0149)    asm(" nop ");
    04D2 0000      NOP
(0150)    SetWR;
    04D3 9A97      SBI	0x12,7
(0151)    SetCS;
    04D4 9A96      SBI	0x12,6
    04D5 9508      RET
(0152) }
(0153) //===============================================
(0154) void SdData(uchar DData)    //send display data
(0155) {   
(0156)    SetWR;
_SdData:
  DData                --> R16
    04D6 9A97      SBI	0x12,7
(0157)    SetRD;
    04D7 9A95      SBI	0x12,5
(0158)    SetRS;     //RS = 1 输入数据 
    04D8 9A18      SBI	0x03,0
(0159)    ClrCS;
    04D9 B382      IN	R24,0x12
    04DA 7B8F      ANDI	R24,0xBF
    04DB BB82      OUT	0x12,R24
(0160)    PORTF = DData;
    04DC 93000062  STS	0x62,R16
(0161)    asm(" nop ");
    04DE 0000      NOP
(0162)    ClrWR;    //写使能
    04DF B382      IN	R24,0x12
    04E0 778F      ANDI	R24,0x7F
    04E1 BB82      OUT	0x12,R24
(0163)    asm(" nop ");   // 8MHZ 执行一条指令大约125ns
    04E2 0000      NOP
(0164)    asm(" nop ");
    04E3 0000      NOP
(0165)    SetWR;
    04E4 9A97      SBI	0x12,7
(0166)    SetCS;
    04E5 9A96      SBI	0x12,6
    04E6 9508      RET
(0167) }
(0168) //====================================
(0169) //=================================
(0170) void LCD_ChkBusy(void)
(0171) {
(0172) 	uchar TempM = 0x08;
_LCD_ChkBusy:
  TempM                --> R16
    04E7 E008      LDI	R16,0x8
(0173) 	DDRG = 0X00;           //将端口设为输入 
    04E8 2422      CLR	R2
    04E9 92200064  STS	0x64,R2
    04EB C003      RJMP	0x04EF
(0174) 	while(TempM)
(0175) 	{
(0176)        TempM = PING;
    04EC 91000063  LDS	R16,0x63
(0177)        TempM &= 0x08;    //读取DB.3位
    04EE 7008      ANDI	R16,0x8
    04EF 2300      TST	R16
    04F0 F7D9      BNE	0x04EC
(0178) 	}
(0179)     DDRG = 0XFF;        //将端口设为输出
    04F1 EF8F      LDI	R24,0xFF
    04F2 93800064  STS	0x64,R24
    04F4 9508      RET
_Welcome_interface:
    04F5 9722      SBIW	R28,2
(0180) }
(0181) //====================================
(0182) void Welcome_interface(void)
(0183) {
(0184)   SdCmd(0x12,0x95);LCD_ChkBusy();  //操作图层1
    04F6 E925      LDI	R18,0x95
    04F7 E102      LDI	R16,0x12
    04F8 DFB6      RCALL	_SdCmd
    04F9 DFED      RCALL	_LCD_ChkBusy
(0185)   CleanScreen();
    04FA D031      RCALL	_CleanScreen
(0186)   SdCmd(0xf1,0x1f);LCD_ChkBusy();     //设置字型大小
    04FB E12F      LDI	R18,0x1F
    04FC EF01      LDI	R16,0xF1
    04FD DFB1      RCALL	_SdCmd
    04FE DFE8      RCALL	_LCD_ChkBusy
(0187)   //SdCmd(0x60,0x0a);LCD_ChkBusy();     //设置光标X坐标
(0188)   //SdCmd(0x70,0x4b);LCD_ChkBusy();     //设置光标Y坐标
(0189)   ShowText(10,75,"金特维");  
    04FF E989      LDI	R24,0x99
    0500 E091      LDI	R25,1
    0501 8399      STD	Y+1,R25
    0502 8388      STD	Y+0,R24
    0503 E42B      LDI	R18,0x4B
    0504 E030      LDI	R19,0
    0505 E00A      LDI	R16,0xA
    0506 E010      LDI	R17,0
    0507 D040      RCALL	_ShowText
(0190)   SdCmd(0xf1,0x0f);LCD_ChkBusy();     //设置字型大小
    0508 E02F      LDI	R18,0xF
    0509 EF01      LDI	R16,0xF1
    050A DFA4      RCALL	_SdCmd
    050B DFDB      RCALL	_LCD_ChkBusy
(0191)   //SdCmd(0x60,0x10);LCD_ChkBusy();     //设置光标X坐标
(0192)   //SdCmd(0x70,0x55);LCD_ChkBusy();     //设置光标Y坐标
(0193)   ShowText(16,85,"技术有限公司");
    050C E88C      LDI	R24,0x8C
    050D E091      LDI	R25,1
    050E 8399      STD	Y+1,R25
    050F 8388      STD	Y+0,R24
    0510 E525      LDI	R18,0x55
    0511 E030      LDI	R19,0
    0512 E100      LDI	R16,0x10
    0513 E010      LDI	R17,0
    0514 D033      RCALL	_ShowText
(0194)   SdCmd(0xf0,0xa0);LCD_ChkBusy();     //设置为简体字型
    0515 EA20      LDI	R18,0xA0
    0516 EF00      LDI	R16,0xF0
    0517 DF97      RCALL	_SdCmd
    0518 DFCE      RCALL	_LCD_ChkBusy
(0195)   SdCmd(0xf1,0x5f);LCD_ChkBusy();     //设置字型大小
    0519 E52F      LDI	R18,0x5F
    051A EF01      LDI	R16,0xF1
    051B DF93      RCALL	_SdCmd
    051C DFCA      RCALL	_LCD_ChkBusy
(0196)   SdCmd(0x10,0x79);LCD_ChkBusy();     //设置光标及粗体显示
    051D E729      LDI	R18,0x79
    051E E100      LDI	R16,0x10
    051F DF8F      RCALL	_SdCmd
    0520 DFC6      RCALL	_LCD_ChkBusy
(0197)   //SdCmd(0x60,0x09);LCD_ChkBusy();     //设置光标X坐标
(0198)   //SdCmd(0x70,0x72);LCD_ChkBusy();     //设置光标Y坐标
(0199)   ShowText(9,114,"GTW - 2008");
    0521 E881      LDI	R24,0x81
    0522 E091      LDI	R25,1
    0523 8399      STD	Y+1,R25
    0524 8388      STD	Y+0,R24
    0525 E722      LDI	R18,0x72
    0526 E030      LDI	R19,0
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -